From b6fcabaf1a8d7ce63b7579cd4410cff3de3b80ba Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Fri, 26 Jan 2018 11:17:42 -0500 Subject: [PATCH 01/36] Eliminate some more duplicate names for deployments API refactoring This patch renames some more types that were missed in PR #1868 --- controller/apps.go | 32 ++++++++++++++++---------------- design/apps.go | 18 +++++++++--------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/controller/apps.go b/controller/apps.go index 256523b886..cc206eac6b 100644 --- a/controller/apps.go +++ b/controller/apps.go @@ -44,7 +44,7 @@ func tostring(item interface{}) string { return string(bytes) } -func getAndCheckOSIOClient(ctx context.Context) *OSIOClientV1 { +func getAndCheckOSIOClientV1(ctx context.Context) *OSIOClientV1 { // defaults host := "localhost" @@ -75,7 +75,7 @@ func getAndCheckOSIOClient(ctx context.Context) *OSIOClientV1 { func (c *AppsController) getSpaceNameFromSpaceID(ctx context.Context, spaceID uuid.UUID) (*string, error) { // TODO - add a cache in AppsController - but will break if user can change space name // use WIT API to convert Space UUID to Space name - osioclient := getAndCheckOSIOClient(ctx) + osioclient := getAndCheckOSIOClientV1(ctx) osioSpace, err := osioclient.GetSpaceByID(ctx, spaceID) if err != nil { @@ -84,9 +84,9 @@ func (c *AppsController) getSpaceNameFromSpaceID(ctx context.Context, spaceID uu return osioSpace.Attributes.Name, nil } -func getNamespaceName(ctx context.Context) (*string, error) { +func getNamespaceNameV1(ctx context.Context) (*string, error) { - osioclient := getAndCheckOSIOClient(ctx) + osioclient := getAndCheckOSIOClientV1(ctx) kubeSpaceAttr, err := osioclient.GetNamespaceByType(ctx, nil, "user") if err != nil { return nil, err @@ -98,7 +98,7 @@ func getNamespaceName(ctx context.Context) (*string, error) { return kubeSpaceAttr.Name, nil } -func getUser(authClient authservice.Client, ctx context.Context) (*authservice.User, error) { +func getUserV1(authClient authservice.Client, ctx context.Context) (*authservice.User, error) { // get the user definition (for cluster URL) resp, err := authClient.ShowUser(ctx, authservice.ShowUserPath(), nil, nil) if err != nil { @@ -122,7 +122,7 @@ func getUser(authClient authservice.Client, ctx context.Context) (*authservice.U return &respType, nil } -func getTokenData(authClient authservice.Client, ctx context.Context, forService string) (*authservice.TokenData, error) { +func getTokenDataV1(authClient authservice.Client, ctx context.Context, forService string) (*authservice.TokenData, error) { resp, err := authClient.RetrieveToken(ctx, authservice.RetrieveTokenPath(), forService, nil) if err != nil { @@ -157,7 +157,7 @@ func (c *AppsController) getKubeClient(ctx context.Context) (kubernetesV1.KubeCl return nil, err } - authUser, err := getUser(*authClient, ctx) + authUser, err := getUserV1(*authClient, ctx) if err != nil { log.Error(ctx, nil, "error accessing Auth server"+tostring(err)) return nil, err @@ -169,7 +169,7 @@ func (c *AppsController) getKubeClient(ctx context.Context) (kubernetesV1.KubeCl } // get the openshift/kubernetes auth info for the cluster OpenShift API - osauth, err := getTokenData(*authClient, ctx, *authUser.Data.Attributes.Cluster) + osauth, err := getTokenDataV1(*authClient, ctx, *authUser.Data.Attributes.Cluster) if err != nil { log.Error(ctx, nil, "error getting openshift credentials:"+tostring(err)) return nil, err @@ -178,7 +178,7 @@ func (c *AppsController) getKubeClient(ctx context.Context) (kubernetesV1.KubeCl kubeURL := *authUser.Data.Attributes.Cluster kubeToken := *osauth.AccessToken - kubeNamespaceName, err := getNamespaceName(ctx) + kubeNamespaceName, err := getNamespaceNameV1(ctx) if err != nil { return nil, err } @@ -265,7 +265,7 @@ func (c *AppsController) ShowDeploymentStatSeries(ctx *app.ShowDeploymentStatSer return witerrors.NewNotFoundError("deployment", ctx.DeployName) } - res := &app.SimpleDeploymentStatSeriesSingle{ + res := &app.SimpleDeploymentStatSeriesV1Single{ Data: statSeries, } @@ -305,7 +305,7 @@ func (c *AppsController) ShowDeploymentStats(ctx *app.ShowDeploymentStatsAppsCon return witerrors.NewNotFoundError("deployment", ctx.DeployName) } - res := &app.SimpleDeploymentStatsSingle{ + res := &app.SimpleDeploymentStatsV1Single{ Data: deploymentStats, } @@ -328,7 +328,7 @@ func (c *AppsController) ShowEnvironment(ctx *app.ShowEnvironmentAppsContext) er return witerrors.NewNotFoundError("environment", ctx.EnvName) } - res := &app.SimpleEnvironmentSingle{ + res := &app.SimpleEnvironmentV1Single{ Data: env, } @@ -357,7 +357,7 @@ func (c *AppsController) ShowSpace(ctx *app.ShowSpaceAppsContext) error { return witerrors.NewNotFoundError("space", *kubeSpaceName) } - res := &app.SimpleSpaceSingle{ + res := &app.SimpleSpaceV1Single{ Data: space, } @@ -385,7 +385,7 @@ func (c *AppsController) ShowSpaceApp(ctx *app.ShowSpaceAppAppsContext) error { return witerrors.NewNotFoundError("application", ctx.AppName) } - res := &app.SimpleApplicationSingle{ + res := &app.SimpleApplicationV1Single{ Data: theapp, } @@ -413,7 +413,7 @@ func (c *AppsController) ShowSpaceAppDeployment(ctx *app.ShowSpaceAppDeploymentA return witerrors.NewNotFoundError("deployment statistics", ctx.DeployName) } - res := &app.SimpleDeploymentSingle{ + res := &app.SimpleDeploymentV1Single{ Data: deploymentStats, } @@ -456,7 +456,7 @@ func (c *AppsController) ShowSpaceEnvironments(ctx *app.ShowSpaceEnvironmentsApp return witerrors.NewNotFoundError("environments", ctx.SpaceID.String()) } - res := &app.SimpleEnvironmentList{ + res := &app.SimpleEnvironmentV1List{ Data: envs, } diff --git a/design/apps.go b/design/apps.go index 5bde23102c..8ca1eac332 100644 --- a/design/apps.go +++ b/design/apps.go @@ -92,22 +92,22 @@ var simpleDeploymentStatSeriesV1 = a.Type("SimpleDeploymentStatSeriesV1", func() }) var simpleSpaceSingleV1 = JSONSingle( - "SimpleSpace", "Holds a single response to a space request", + "SimpleSpaceV1", "Holds a single response to a space request", simpleSpaceV1, nil) var simpleAppSingleV1 = JSONSingle( - "SimpleApplication", "Holds a single response to a space/application request", + "SimpleApplicationV1", "Holds a single response to a space/application request", simpleAppV1, nil) var simpleEnvironmentSingleV1 = JSONSingle( - "SimpleEnvironment", "Holds a single response to a space/environment request", + "SimpleEnvironmentV1", "Holds a single response to a space/environment request", simpleEnvironmentV1, nil) var simpleEnvironmentMultipleV1 = JSONList( - "SimpleEnvironment", "Holds a response to a space/environment request", + "SimpleEnvironmentV1", "Holds a response to a space/environment request", simpleEnvironmentV1, nil, nil) @@ -118,28 +118,28 @@ var simplePodV1 = a.Type("SimplePodV1", func() { }) var simplePodMultipleV1 = JSONList( - "SimplePod", "Holds a list of pods", + "SimplePodV1", "Holds a list of pods", simplePodV1, nil, nil) var simpleDeploymentSingleV1 = JSONSingle( - "SimpleDeployment", "Holds a single response to a space/application/deployment request", + "SimpleDeploymentV1", "Holds a single response to a space/application/deployment request", simpleDeploymentV1, nil) var simpleDeploymentStatsSingleV1 = JSONSingle( - "SimpleDeploymentStats", "Holds a single response to a space/application/deployment/stats request", + "SimpleDeploymentStatsV1", "Holds a single response to a space/application/deployment/stats request", simpleDeploymentStatsV1, nil) var simpleDeploymentStatSeriesSingleV1 = JSONSingle( - "SimpleDeploymentStatSeries", "HOlds a response to a stat series query", + "SimpleDeploymentStatSeriesV1", "HOlds a response to a stat series query", simpleDeploymentStatSeriesV1, nil) var simpleEnvironmentStatSingleV1 = JSONSingle( - "EnvStats", "Holds a single response to a pipeline/stats request", + "EnvStatsV1", "Holds a single response to a pipeline/stats request", envStatsV1, nil) From 99d3f016a45a04d2177f2733a54e1c208be3ae65 Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Thu, 8 Feb 2018 09:16:28 -0500 Subject: [PATCH 02/36] remove unused /apps API The /apps API has been replaced by the JSON-API conformant version /deployments. Fixes #1889 --- controller/apps.go | 481 ---------- controller/apps_blackbox_test.go | 93 -- controller/apps_osioclient.go | 113 --- design/apps.go | 295 ------ kubernetesV1/apps_kubeclient.go | 879 ------------------ kubernetesV1/apps_kubeclient_blackbox_test.go | 479 ---------- kubernetesV1/apps_metrics.go | 300 ------ kubernetesV1/apps_metrics_blackbox_test.go | 414 --------- main.go | 4 - 9 files changed, 3058 deletions(-) delete mode 100644 controller/apps.go delete mode 100644 controller/apps_blackbox_test.go delete mode 100644 controller/apps_osioclient.go delete mode 100644 design/apps.go delete mode 100644 kubernetesV1/apps_kubeclient.go delete mode 100644 kubernetesV1/apps_kubeclient_blackbox_test.go delete mode 100644 kubernetesV1/apps_metrics.go delete mode 100644 kubernetesV1/apps_metrics_blackbox_test.go diff --git a/controller/apps.go b/controller/apps.go deleted file mode 100644 index 3ee882e3b5..0000000000 --- a/controller/apps.go +++ /dev/null @@ -1,481 +0,0 @@ -package controller - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "io/ioutil" - "net/http" - "net/url" - "os" - "time" - - "github.com/fabric8-services/fabric8-wit/auth/authservice" - "github.com/fabric8-services/fabric8-wit/kubernetesV1" - - "github.com/fabric8-services/fabric8-wit/app" - "github.com/fabric8-services/fabric8-wit/auth" - "github.com/fabric8-services/fabric8-wit/configuration" - witerrors "github.com/fabric8-services/fabric8-wit/errors" - "github.com/fabric8-services/fabric8-wit/log" - "github.com/goadesign/goa" - uuid "github.com/satori/go.uuid" -) - -// AppsController implements the apps resource. -type AppsController struct { - *goa.Controller - Config *configuration.Registry - KubeClientGetterV1 -} - -// KubeClientGetterV1 creates an instance of KubeClientInterface -type KubeClientGetterV1 interface { - GetKubeClientV1(ctx context.Context) (kubernetesV1.KubeClientInterface, error) -} - -// Default implementation of KubeClientGetter used by NewAppsController -type defaultKubeClientGetterV1 struct { - config *configuration.Registry -} - -// NewAppsController creates a apps controller. -func NewAppsController(service *goa.Service, config *configuration.Registry) *AppsController { - return &AppsController{ - Controller: service.NewController("AppsController"), - Config: config, - KubeClientGetterV1: &defaultKubeClientGetterV1{ - config: config, - }, - } -} - -func getAndCheckOSIOClientV1(ctx context.Context) *OSIOClientV1 { - - // 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 - } - - if os.Getenv("FABRIC8_WIT_API_URL") != "" { - witurl, err := url.Parse(os.Getenv("FABRIC8_WIT_API_URL")) - if err != nil { - log.Warn(ctx, nil, "Cannot parse FABRIC8_WIT_API_URL; assuming localhost") - } - host = witurl.Host - scheme = witurl.Scheme - } - - oc := NewOSIOClientV1(ctx, scheme, host) - - return oc -} - -func (c *AppsController) getSpaceNameFromSpaceID(ctx context.Context, spaceID uuid.UUID) (*string, error) { - // TODO - add a cache in AppsController - but will break if user can change space name - // use WIT API to convert Space UUID to Space name - osioclient := getAndCheckOSIOClientV1(ctx) - - osioSpace, err := osioclient.GetSpaceByID(ctx, spaceID) - if err != nil { - return nil, err - } - return osioSpace.Attributes.Name, nil -} - -func getNamespaceNameV1(ctx context.Context) (*string, error) { - - osioclient := getAndCheckOSIOClientV1(ctx) - kubeSpaceAttr, err := osioclient.GetNamespaceByType(ctx, nil, "user") - if err != nil { - return nil, err - } - if kubeSpaceAttr == nil || kubeSpaceAttr.Name == nil { - return nil, witerrors.NewNotFoundError("namespace", "user") - } - - return kubeSpaceAttr.Name, nil -} - -func getUserV1(authClient authservice.Client, ctx context.Context) (*authservice.User, error) { - // get the user definition (for cluster URL) - resp, err := authClient.ShowUser(ctx, authservice.ShowUserPath(), nil, nil) - if err != nil { - return nil, err - } - - defer resp.Body.Close() - - respBody, err := ioutil.ReadAll(resp.Body) - - status := resp.StatusCode - if status != http.StatusOK { - return nil, fmt.Errorf("Failed to GET user due to status code %d", status) - } - - var respType authservice.User - err = json.Unmarshal(respBody, &respType) - if err != nil { - return nil, err - } - return &respType, nil -} - -func getTokenDataV1(authClient authservice.Client, ctx context.Context, forService string) (*authservice.TokenData, error) { - - resp, err := authClient.RetrieveToken(ctx, authservice.RetrieveTokenPath(), forService, nil) - if err != nil { - return nil, err - } - - defer resp.Body.Close() - - respBody, err := ioutil.ReadAll(resp.Body) - - status := resp.StatusCode - if status != http.StatusOK { - return nil, errors.New("Failed to GET user due to status code " + string(status)) - } - - var respType authservice.TokenData - err = json.Unmarshal(respBody, &respType) - if err != nil { - return nil, err - } - return &respType, nil -} - -// GetKubeClient creates a kube client for the appropriate cluster assigned to the current user -func (g *defaultKubeClientGetterV1) GetKubeClientV1(ctx context.Context) (kubernetesV1.KubeClientInterface, error) { - - // create Auth API client - authClient, err := auth.CreateClient(ctx, g.config) - if err != nil { - log.Error(ctx, nil, "error accessing Auth server"+tostring(err)) - return nil, err - } - - authUser, err := getUserV1(*authClient, ctx) - if err != nil { - log.Error(ctx, nil, "error accessing Auth server"+tostring(err)) - return nil, err - } - - if authUser == nil || authUser.Data.Attributes.Cluster == nil { - log.Error(ctx, nil, "error getting user from Auth server:"+tostring(authUser)) - return nil, fmt.Errorf("error getting user from Auth Server: %s", tostring(authUser)) - } - - // get the openshift/kubernetes auth info for the cluster OpenShift API - osauth, err := getTokenDataV1(*authClient, ctx, *authUser.Data.Attributes.Cluster) - if err != nil { - log.Error(ctx, nil, "error getting openshift credentials:"+tostring(err)) - return nil, err - } - - kubeURL := *authUser.Data.Attributes.Cluster - kubeToken := *osauth.AccessToken - - kubeNamespaceName, err := getNamespaceNameV1(ctx) - if err != nil { - return nil, err - } - - // create the cluster API client - kubeConfig := &kubernetesV1.KubeClientConfig{ - ClusterURL: kubeURL, - BearerToken: kubeToken, - UserNamespace: *kubeNamespaceName, - } - kc, err := kubernetesV1.NewKubeClient(kubeConfig) - if err != nil { - return nil, err - } - return kc, nil -} - -// SetDeployment runs the setDeployment action. -func (c *AppsController) SetDeployment(ctx *app.SetDeploymentAppsContext) 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 witerrors.NewBadParameterError("podCount", "missing") - } - - kc, err := c.GetKubeClientV1(ctx) - defer cleanupV1(kc) - if err != nil { - return witerrors.NewUnauthorizedError("openshift token") - } - - kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil { - return witerrors.NewNotFoundError("osio space", ctx.SpaceID.String()) - } - - oldCount, err := kc.ScaleDeployment(*kubeSpaceName, ctx.AppName, ctx.DeployName, *ctx.PodCount) - if err != nil { - return witerrors.NewInternalError(ctx, err) - } - - log.Info(ctx, nil, "podcount was %d; will be set to %d", *oldCount, *ctx.PodCount) - return ctx.OK([]byte{}) -} - -// ShowDeploymentStatSeries runs the showDeploymentStatSeries action. -func (c *AppsController) ShowDeploymentStatSeries(ctx *app.ShowDeploymentStatSeriesAppsContext) 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 witerrors.NewBadParameterError("end", *ctx.End) - } - - kc, err := c.GetKubeClientV1(ctx) - defer cleanupV1(kc) - if err != nil { - return witerrors.NewUnauthorizedError("openshift token") - } - - kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil { - return err - } - - statSeries, err := kc.GetDeploymentStatSeries(*kubeSpaceName, ctx.AppName, ctx.DeployName, - startTime, endTime, limit) - if err != nil { - return err - } else if statSeries == nil { - return witerrors.NewNotFoundError("deployment", ctx.DeployName) - } - - res := &app.SimpleDeploymentStatSeriesV1Single{ - Data: statSeries, - } - - return ctx.OK(res) -} - -// ShowDeploymentStats runs the showDeploymentStats action. -func (c *AppsController) ShowDeploymentStats(ctx *app.ShowDeploymentStatsAppsContext) error { - - kc, err := c.GetKubeClientV1(ctx) - defer cleanupV1(kc) - if err != nil { - return witerrors.NewUnauthorizedError("openshift token") - } - - kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil { - return witerrors.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 witerrors.NewInternalError(ctx, err) - } - if deploymentStats == nil { - return witerrors.NewNotFoundError("deployment", ctx.DeployName) - } - - res := &app.SimpleDeploymentStatsV1Single{ - Data: deploymentStats, - } - - return ctx.OK(res) -} - -// ShowEnvironment runs the showEnvironment action. -func (c *AppsController) ShowEnvironment(ctx *app.ShowEnvironmentAppsContext) error { - - kc, err := c.GetKubeClientV1(ctx) - defer cleanupV1(kc) - if err != nil { - return witerrors.NewUnauthorizedError("openshift token") - } - - env, err := kc.GetEnvironment(ctx.EnvName) - if err != nil { - return witerrors.NewInternalError(ctx, err) - } - if env == nil { - return witerrors.NewNotFoundError("environment", ctx.EnvName) - } - - res := &app.SimpleEnvironmentV1Single{ - Data: env, - } - - return ctx.OK(res) -} - -// ShowSpace runs the showSpace action. -func (c *AppsController) ShowSpace(ctx *app.ShowSpaceAppsContext) error { - - kc, err := c.GetKubeClientV1(ctx) - defer cleanupV1(kc) - if err != nil { - return witerrors.NewUnauthorizedError("openshift token") - } - - kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil { - return witerrors.NewNotFoundError("osio space", ctx.SpaceID.String()) - } - - // get OpenShift space - space, err := kc.GetSpace(*kubeSpaceName) - if err != nil { - return witerrors.NewInternalError(ctx, err) - } - if space == nil { - return witerrors.NewNotFoundError("space", *kubeSpaceName) - } - - res := &app.SimpleSpaceV1Single{ - Data: space, - } - - return ctx.OK(res) -} - -// ShowSpaceApp runs the showSpaceApp action. -func (c *AppsController) ShowSpaceApp(ctx *app.ShowSpaceAppAppsContext) error { - - kc, err := c.GetKubeClientV1(ctx) - defer cleanupV1(kc) - if err != nil { - return witerrors.NewUnauthorizedError("openshift token") - } - - kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil { - return witerrors.NewNotFoundError("osio space", ctx.SpaceID.String()) - } - - theapp, err := kc.GetApplication(*kubeSpaceName, ctx.AppName) - if err != nil { - return witerrors.NewInternalError(ctx, err) - } - if theapp == nil { - return witerrors.NewNotFoundError("application", ctx.AppName) - } - - res := &app.SimpleApplicationV1Single{ - Data: theapp, - } - - return ctx.OK(res) -} - -// ShowSpaceAppDeployment runs the showSpaceAppDeployment action. -func (c *AppsController) ShowSpaceAppDeployment(ctx *app.ShowSpaceAppDeploymentAppsContext) error { - - kc, err := c.GetKubeClientV1(ctx) - defer cleanupV1(kc) - if err != nil { - return witerrors.NewUnauthorizedError("openshift token") - } - - kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil { - return witerrors.NewNotFoundError("osio space", ctx.SpaceID.String()) - } - - deploymentStats, err := kc.GetDeployment(*kubeSpaceName, ctx.AppName, ctx.DeployName) - if err != nil { - return witerrors.NewInternalError(ctx, err) - } - if deploymentStats == nil { - return witerrors.NewNotFoundError("deployment statistics", ctx.DeployName) - } - - res := &app.SimpleDeploymentV1Single{ - Data: deploymentStats, - } - - return ctx.OK(res) -} - -// ShowEnvAppPods runs the showEnvAppPods action. -func (c *AppsController) ShowEnvAppPods(ctx *app.ShowEnvAppPodsAppsContext) error { - - kc, err := c.GetKubeClientV1(ctx) - defer cleanupV1(kc) - if err != nil { - return witerrors.NewUnauthorizedError("openshift token") - } - - pods, err := kc.GetPodsInNamespace(ctx.EnvName, ctx.AppName) - if err != nil { - return witerrors.NewInternalError(ctx, err) - } - if pods == nil || len(pods) == 0 { - return witerrors.NewNotFoundError("pods", ctx.AppName) - } - jsonresp := "{\"pods\":" + tostring(pods) + "}\n" - - return ctx.OK([]byte(jsonresp)) -} - -// ShowSpaceEnvironments runs the showSpaceEnvironments action. -func (c *AppsController) ShowSpaceEnvironments(ctx *app.ShowSpaceEnvironmentsAppsContext) error { - - kc, err := c.GetKubeClientV1(ctx) - defer cleanupV1(kc) - if err != nil { - return witerrors.NewUnauthorizedError("openshift token") - } - - envs, err := kc.GetEnvironments() - if err != nil { - return witerrors.NewInternalError(ctx, err) - } - if envs == nil { - return witerrors.NewNotFoundError("environments", ctx.SpaceID.String()) - } - - res := &app.SimpleEnvironmentV1List{ - Data: envs, - } - - return ctx.OK(res) -} - -func cleanupV1(kc kubernetesV1.KubeClientInterface) { - if kc != nil { - kc.Close() - } -} diff --git a/controller/apps_blackbox_test.go b/controller/apps_blackbox_test.go deleted file mode 100644 index cecf51e7bb..0000000000 --- a/controller/apps_blackbox_test.go +++ /dev/null @@ -1,93 +0,0 @@ -package controller_test - -import ( - "context" - "errors" - "testing" - - "github.com/stretchr/testify/assert" - - "github.com/fabric8-services/fabric8-wit/app" - "github.com/fabric8-services/fabric8-wit/controller" - "github.com/fabric8-services/fabric8-wit/kubernetesV1" -) - -type testKubeClientV1 struct { - closed bool - // Don't implement methods we don't yet need - kubernetesV1.KubeClientInterface -} - -func (kc *testKubeClientV1) Close() { - kc.closed = true -} - -type testKubeClientGetterV1 struct { - client *testKubeClientV1 -} - -func (g *testKubeClientGetterV1) GetKubeClientV1(ctx context.Context) (kubernetesV1.KubeClientInterface, error) { - // Overwrites previous clients created by this getter - g.client = &testKubeClientV1{} - // Also return an error to avoid executing remainder of calling method - return g.client, errors.New("Test") -} - -func TestAPIMethodsCloseKubeV1(t *testing.T) { - testCases := []struct { - name string - method func(*controller.AppsController) error - }{ - {"SetDeployment", func(ctrl *controller.AppsController) error { - count := 1 - ctx := &app.SetDeploymentAppsContext{ - PodCount: &count, - } - return ctrl.SetDeployment(ctx) - }}, - {"ShowDeploymentStatSeries", func(ctrl *controller.AppsController) error { - ctx := &app.ShowDeploymentStatSeriesAppsContext{} - return ctrl.ShowDeploymentStatSeries(ctx) - }}, - {"ShowDeploymentStats", func(ctrl *controller.AppsController) error { - ctx := &app.ShowDeploymentStatsAppsContext{} - return ctrl.ShowDeploymentStats(ctx) - }}, - {"ShowEnvironment", func(ctrl *controller.AppsController) error { - ctx := &app.ShowEnvironmentAppsContext{} - return ctrl.ShowEnvironment(ctx) - }}, - {"ShowSpace", func(ctrl *controller.AppsController) error { - ctx := &app.ShowSpaceAppsContext{} - return ctrl.ShowSpace(ctx) - }}, - {"ShowSpaceApp", func(ctrl *controller.AppsController) error { - ctx := &app.ShowSpaceAppAppsContext{} - return ctrl.ShowSpaceApp(ctx) - }}, - {"ShowSpaceAppDeployment", func(ctrl *controller.AppsController) error { - ctx := &app.ShowSpaceAppDeploymentAppsContext{} - return ctrl.ShowSpaceAppDeployment(ctx) - }}, - {"ShowEnvAppPods", func(ctrl *controller.AppsController) error { - ctx := &app.ShowEnvAppPodsAppsContext{} - return ctrl.ShowEnvAppPods(ctx) - }}, - {"ShowSpaceEnvironments", func(ctrl *controller.AppsController) error { - ctx := &app.ShowSpaceEnvironmentsAppsContext{} - return ctrl.ShowSpaceEnvironments(ctx) - }}, - } - // Check that each API method creating a KubeClientInterface also closes it - getter := &testKubeClientGetterV1{} - controller := &controller.AppsController{ - KubeClientGetterV1: getter, - } - for _, testCase := range testCases { - err := testCase.method(controller) - assert.Error(t, err, "Expected error \"Test\": "+testCase.name) - // Check Close was called before returning - assert.NotNil(t, getter.client, "No Kube client created: "+testCase.name) - assert.True(t, getter.client.closed, "Kube client not closed: "+testCase.name) - } -} diff --git a/controller/apps_osioclient.go b/controller/apps_osioclient.go deleted file mode 100644 index 9d69f2ea33..0000000000 --- a/controller/apps_osioclient.go +++ /dev/null @@ -1,113 +0,0 @@ -package controller - -import ( - "context" - "encoding/json" - "errors" - "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" - goaclient "github.com/goadesign/goa/client" - goauuid "github.com/goadesign/goa/uuid" - uuid "github.com/satori/go.uuid" -) - -// OSIOClientV1 contains configuration and methods for interacting with OSIO API -type OSIOClientV1 struct { - wc *witclient.Client -} - -// NewOSIOClientV1 creates an openshift IO client given an http request context -func NewOSIOClientV1(ctx context.Context, scheme string, host string) *OSIOClientV1 { - - client := new(OSIOClientV1) - httpClient := newHTTPClient() - client.wc = witclient.New(goaclient.HTTPClientDoer(httpClient)) - client.wc.Host = host - client.wc.Scheme = scheme - client.wc.SetJWTSigner(goasupport.NewForwardSigner(ctx)) - return client -} - -// newHTTPClient returns the HTTP client used by the API client to make requests to the service. -func newHTTPClient() *http.Client { - // TODO change timeout - return http.DefaultClient -} - -// GetNamespaceByType finds a namespace by type (user, che, stage, etc) -// if userService is nil, will fetch the user services under the hood -func (osioclient *OSIOClientV1) 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, err - } - 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 *OSIOClientV1) GetUserServices(ctx context.Context) (*app.UserService, error) { - resp, err := osioclient.wc.ShowUserService(ctx, witclient.ShowUserServicePath()) - if err != nil { - return nil, err - } - - defer resp.Body.Close() - - respBody, err := ioutil.ReadAll(resp.Body) - - status := resp.StatusCode - if status == http.StatusNotFound { - return nil, nil - } else if status != http.StatusOK { - return nil, errors.New("Failed to GET " + witclient.ShowUserServicePath() + " due to status code " + string(status)) - } - - var respType app.UserServiceSingle - err = json.Unmarshal(respBody, &respType) - if err != nil { - return nil, err - } - return respType.Data, nil -} - -// GetSpaceByID - fetch space given UUID -func (osioclient *OSIOClientV1) GetSpaceByID(ctx context.Context, spaceID uuid.UUID) (*app.Space, error) { - guid := goauuid.UUID(spaceID) - urlpath := witclient.ShowSpacePath(guid) - resp, err := osioclient.wc.ShowSpace(ctx, urlpath, nil, nil) - if err != nil { - return nil, err - } - - defer resp.Body.Close() - - respBody, err := ioutil.ReadAll(resp.Body) - - status := resp.StatusCode - if status == http.StatusNotFound { - return nil, nil - } else if status != http.StatusOK { - return nil, errors.New("Failed to GET " + urlpath + " due to status code " + string(status)) - } - - var respType app.SpaceSingle - err = json.Unmarshal(respBody, &respType) - if err != nil { - return nil, err - } - return respType.Data, nil -} diff --git a/design/apps.go b/design/apps.go deleted file mode 100644 index 8ca1eac332..0000000000 --- a/design/apps.go +++ /dev/null @@ -1,295 +0,0 @@ -package design - -import ( - d "github.com/goadesign/goa/design" - a "github.com/goadesign/goa/design/apidsl" -) - -// SimpleSpace describe a space -var simpleSpaceV1 = a.Type("SimpleSpaceV1", func() { - a.Description(`a space consisting of multiple applications`) - a.Attribute("id", d.UUID) - a.Attribute("name", d.String) - a.Attribute("applications", a.ArrayOf(simpleAppV1)) - a.Required("applications") -}) - -// SimpleApp describe an application within a space -var simpleAppV1 = a.Type("SimpleAppV1", func() { - a.Description(`a description of an application`) - a.Attribute("id", d.UUID) - a.Attribute("name", d.String) - a.Attribute("pipeline", a.ArrayOf(simpleDeploymentV1)) - a.Required("pipeline") -}) - -// simpleDeployment describe an element of an application pipeline -var simpleDeploymentV1 = a.Type("SimpleDeploymentV1", 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", podStatsV1) -}) - -// simpleDeployment describe an element of an application pipeline -var simpleEnvironmentV1 = a.Type("SimpleEnvironmentV1", func() { - a.Description(`a shared environment`) - a.Attribute("id", d.UUID) - a.Attribute("name", d.String) - a.Attribute("quota", envStatsV1) -}) - -var envStatsV1 = a.Type("EnvStatsV1", func() { - a.Description("resource usage and quotas for an environment") - a.Attribute("cpucores", envStatCoresV1) - a.Attribute("memory", envStatMemoryV1) -}) - -var envStatCoresV1 = a.Type("EnvStatCoresV1", func() { - a.Description(`CPU core stats`) - a.Attribute("used", d.Number) - a.Attribute("quota", d.Number) -}) - -var envStatMemoryV1 = a.Type("EnvStatMemoryV1", func() { - a.Description(`memory stats`) - a.Attribute("used", d.Number) - a.Attribute("quota", d.Number) - a.Attribute("units", d.String) -}) - -var podStatsV1 = a.Type("PodStatsV1", func() { - a.Description(`pod stats`) - a.Attribute("starting", d.Integer) - a.Attribute("running", d.Integer) - a.Attribute("stopping", d.Integer) - a.Attribute("total", d.Integer) -}) - -var timedNumberTupleV1 = a.Type("TimedNumberTupleV1", func() { - a.Description("a set of time and number values") - a.Attribute("time", d.Number) - a.Attribute("value", d.Number) -}) - -var simpleDeploymentStatsV1 = a.Type("SimpleDeploymentStatsV1", func() { - a.Description("current deployment stats") - a.Attribute("cores", timedNumberTupleV1) - a.Attribute("memory", timedNumberTupleV1) - a.Attribute("net_tx", timedNumberTupleV1) - a.Attribute("net_rx", timedNumberTupleV1) -}) - -var simpleDeploymentStatSeriesV1 = a.Type("SimpleDeploymentStatSeriesV1", func() { - a.Description("pod stat series") - a.Attribute("start", d.Number) - a.Attribute("end", d.Number) - a.Attribute("memory", a.ArrayOf(timedNumberTupleV1)) - a.Attribute("cores", a.ArrayOf(timedNumberTupleV1)) - a.Attribute("net_tx", a.ArrayOf(timedNumberTupleV1)) - a.Attribute("net_rx", a.ArrayOf(timedNumberTupleV1)) -}) - -var simpleSpaceSingleV1 = JSONSingle( - "SimpleSpaceV1", "Holds a single response to a space request", - simpleSpaceV1, - nil) - -var simpleAppSingleV1 = JSONSingle( - "SimpleApplicationV1", "Holds a single response to a space/application request", - simpleAppV1, - nil) - -var simpleEnvironmentSingleV1 = JSONSingle( - "SimpleEnvironmentV1", "Holds a single response to a space/environment request", - simpleEnvironmentV1, - nil) - -var simpleEnvironmentMultipleV1 = JSONList( - "SimpleEnvironmentV1", "Holds a response to a space/environment request", - simpleEnvironmentV1, - nil, - nil) - -var simplePodV1 = a.Type("SimplePodV1", func() { - a.Description("wrapper for a kubernetes Pod") - a.Attribute("pod", d.Any) -}) - -var simplePodMultipleV1 = JSONList( - "SimplePodV1", "Holds a list of pods", - simplePodV1, - nil, - nil) - -var simpleDeploymentSingleV1 = JSONSingle( - "SimpleDeploymentV1", "Holds a single response to a space/application/deployment request", - simpleDeploymentV1, - nil) - -var simpleDeploymentStatsSingleV1 = JSONSingle( - "SimpleDeploymentStatsV1", "Holds a single response to a space/application/deployment/stats request", - simpleDeploymentStatsV1, - nil) - -var simpleDeploymentStatSeriesSingleV1 = JSONSingle( - "SimpleDeploymentStatSeriesV1", "HOlds a response to a stat series query", - simpleDeploymentStatSeriesV1, - nil) - -var simpleEnvironmentStatSingleV1 = JSONSingle( - "EnvStatsV1", "Holds a single response to a pipeline/stats request", - envStatsV1, - nil) - -var _ = a.Resource("apps", func() { - a.BasePath("/apps") - - // 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, simpleSpaceSingleV1) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - }) - - a.Action("showSpaceApp", func() { - a.Routing( - a.GET("/spaces/:spaceID/applications/:appName"), - ) - a.Description("list application") - a.Params(func() { - a.Param("spaceID", d.UUID, "ID of the space") - a.Param("appName", d.String, "Name of the application") - }) - a.Response(d.OK, simpleAppSingleV1) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - }) - - a.Action("showSpaceAppDeployment", func() { - a.Routing( - a.GET("/spaces/:spaceID/applications/:appName/deployments/:deployName"), - ) - a.Description("list pipe element") - 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 pipe deployment") - }) - a.Response(d.OK, simpleDeploymentSingleV1) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, 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, simpleDeploymentStatsSingleV1) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, 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, simpleDeploymentStatSeriesSingleV1) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - }) - - a.Action("setDeployment", func() { - a.Routing( - a.PUT("/spaces/:spaceID/applications/:appName/deployments/:deployName/control"), - ) - 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.Action("showSpaceEnvironments", func() { - a.Routing( - a.GET("/spaces/:spaceID/environments"), - ) - a.Description("list all environments for a space") - a.Params(func() { - a.Param("spaceID", d.UUID, "ID of the space") - }) - a.Response(d.OK, simpleEnvironmentMultipleV1) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - }) - - a.Action("showEnvironment", func() { - a.Routing( - a.GET("/environments/:envName"), - ) - a.Description("list environment") - a.Params(func() { - a.Param("envName", d.String, "Name of the environment") - }) - a.Response(d.OK, simpleEnvironmentSingleV1) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - }) - - a.Action("showEnvAppPods", func() { - a.Routing( - a.GET("/environments/:envName/applications/:appName/pods"), - ) - a.Description("list application pods") - a.Params(func() { - a.Param("envName", d.String, "Name of the environment") - a.Param("appName", d.String, "Name of the application") - }) - // TODO - find a way to use predefined structs in goa DSL - // until then, hand code JSON response here instead of []v1.Pod - a.Response(d.OK, "application/json") - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - }) - -}) diff --git a/kubernetesV1/apps_kubeclient.go b/kubernetesV1/apps_kubeclient.go deleted file mode 100644 index dc58870011..0000000000 --- a/kubernetesV1/apps_kubeclient.go +++ /dev/null @@ -1,879 +0,0 @@ -package kubernetesV1 - -import ( - "bytes" - "errors" - "fmt" - "io/ioutil" - "math" - "net/http" - "net/url" - "strings" - "time" - - yaml "gopkg.in/yaml.v2" - resource "k8s.io/apimachinery/pkg/api/resource" - metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" - types "k8s.io/apimachinery/pkg/types" - kubernetes "k8s.io/client-go/kubernetes" - corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - v1 "k8s.io/client-go/pkg/api/v1" - rest "k8s.io/client-go/rest" - - "github.com/fabric8-services/fabric8-wit/app" -) - -// KubeClientConfig holds configuration data needed to create a new KubeClientInterface -// with kubernetes.NewKubeClient -type KubeClientConfig struct { - // URL to the Kubernetes cluster's API server - ClusterURL string - // An authorized token to access the cluster - BearerToken string - // Kubernetes namespace in the cluster of type 'user' - UserNamespace string - // 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 - // hook to inject build configs for testing - BuildConfigInterface -} - -// KubeRESTAPIGetter has a method to access the KubeRESTAPI interface -type KubeRESTAPIGetter interface { - GetKubeRESTAPI(config *KubeClientConfig) (KubeRESTAPI, error) -} - -// MetricsGetter has a method to access the MetricsInterface interface -type MetricsGetter interface { - GetMetrics(config *MetricsClientConfig) (MetricsInterface, error) -} - -// BuildConfigGetter will provide build configs for testing -type BuildConfigInterface interface { - GetBuildConfigs(space string) ([]string, error) -} - -// KubeClientInterface contains configuration and methods for interacting with a Kubernetes cluster -type KubeClientInterface interface { - GetSpace(spaceName string) (*app.SimpleSpaceV1, error) - GetApplication(spaceName string, appName string) (*app.SimpleAppV1, error) - GetDeployment(spaceName string, appName string, envName string) (*app.SimpleDeploymentV1, error) - ScaleDeployment(spaceName string, appName string, envName string, deployNumber int) (*int, error) - GetDeploymentStats(spaceName string, appName string, envName string, - startTime time.Time) (*app.SimpleDeploymentStatsV1, error) - GetDeploymentStatSeries(spaceName string, appName string, envName string, startTime time.Time, - endTime time.Time, limit int) (*app.SimpleDeploymentStatSeriesV1, error) - GetEnvironments() ([]*app.SimpleEnvironmentV1, error) - GetEnvironment(envName string) (*app.SimpleEnvironmentV1, error) - GetPodsInNamespace(nameSpace string, appName string) ([]v1.Pod, error) - Close() -} - -type kubeClient struct { - config *KubeClientConfig - envMap map[string]string - KubeRESTAPI - MetricsInterface - BuildConfigInterface -} - -// KubeRESTAPI collects methods that call out to the Kubernetes API server over the network -type KubeRESTAPI interface { - corev1.CoreV1Interface -} - -type deployment struct { - dcUID types.UID - appVersion string - currentUID types.UID -} - -// Receiver for default implementation of KubeRESTAPIGetter and MetricsGetter -type defaultGetter struct{} - -// NewKubeClient creates a KubeClientInterface given a configuration -func NewKubeClient(config *KubeClientConfig) (KubeClientInterface, error) { - // Use default implementation if no KubernetesGetter is specified - if config.KubeRESTAPIGetter == nil { - config.KubeRESTAPIGetter = &defaultGetter{} - } - kubeAPI, err := config.GetKubeRESTAPI(config) - if err != nil { - return nil, err - } - - // Use default implementation if no MetricsGetter is specified - if config.MetricsGetter == nil { - config.MetricsGetter = &defaultGetter{} - } - // In the absence of a better way to get the user's metrics URL, - // substitute "api" with "metrics" in user's cluster URL - metricsURL, err := getMetricsURLFromAPIURL(config.ClusterURL) - if err != nil { - return nil, err - } - // Create MetricsClient for talking with Hawkular API - metricsConfig := &MetricsClientConfig{ - MetricsURL: metricsURL, - BearerToken: config.BearerToken, - } - metrics, err := config.GetMetrics(metricsConfig) - if err != nil { - return nil, err - } - - kubeClient := &kubeClient{ - config: config, - KubeRESTAPI: kubeAPI, - MetricsInterface: metrics, - BuildConfigInterface: config.BuildConfigInterface, - } - - // Get environments from config map - envMap, err := kubeClient.getEnvironmentsFromConfigMap() - if err != nil { - return nil, err - } - kubeClient.envMap = envMap - return kubeClient, nil -} - -func (*defaultGetter) GetKubeRESTAPI(config *KubeClientConfig) (KubeRESTAPI, error) { - restConfig := &rest.Config{ - Host: config.ClusterURL, - BearerToken: config.BearerToken, - } - clientset, err := kubernetes.NewForConfig(restConfig) - if err != nil { - return nil, err - } - return clientset.CoreV1(), nil -} - -func (*defaultGetter) GetMetrics(config *MetricsClientConfig) (MetricsInterface, error) { - return NewMetricsClient(config) -} - -// 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 - kc.MetricsInterface.Close() -} - -// GetSpace returns a space matching the provided name, containing all applications that belong to it -func (kc *kubeClient) GetSpace(spaceName string) (*app.SimpleSpaceV1, 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.getBuildConfigs(spaceName) - if err != nil { - return nil, err - } - - // Get all applications in this space using BuildConfig names - apps := make([]*app.SimpleAppV1, 0) - for _, bc := range buildconfigs { - appn, err := kc.GetApplication(spaceName, bc) - if err != nil { - return nil, err - } - apps = append(apps, appn) - } - - result := &app.SimpleSpaceV1{ - 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.SimpleAppV1, error) { - // Get all deployments of this app for each environment in this space - deployments := make([]*app.SimpleDeploymentV1, 0) - for envName := range kc.envMap { - deployment, err := kc.GetDeployment(spaceName, appName, envName) - if err != nil { - return nil, err - } else if deployment != nil { - deployments = append(deployments, deployment) - } - } - - result := &app.SimpleAppV1{ - Name: &appName, - Pipeline: deployments, - } - 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.getEnvironmentNamespace(envName) - if err != nil { - return nil, err - } - // Look up the Scale for the DeploymentConfig corresponding to the application name in the provided environment - dcScaleURL := fmt.Sprintf("/oapi/v1/namespaces/%s/deploymentconfigs/%s/scale", envNS, appName) - scale, err := kc.getResource(dcScaleURL, true) - if err != nil { - return nil, err - } else if scale == nil { - return nil, nil - } - - spec, ok := scale["spec"].(map[interface{}]interface{}) - if !ok { - return nil, errors.New("Invalid deployment config returned from endpoint: missing 'spec'") - } - - replicasYaml, pres := spec["replicas"] - oldReplicas := 0 // replicas property may be missing from spec if set to 0 - if pres { - oldReplicas, ok = replicasYaml.(int) - if !ok { - return nil, errors.New("Invalid deployment config returned from endpoint: 'replicas' is not an integer") - } - } - spec["replicas"] = deployNumber - - yamlScale, err := yaml.Marshal(scale) - if err != nil { - return nil, err - } - - _, err = kc.putResource(dcScaleURL, yamlScale) - if err != nil { - return nil, err - } - - return &oldReplicas, 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.SimpleDeploymentV1, error) { - envNS, err := kc.getEnvironmentNamespace(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 || len(deploy.currentUID) == 0 { - return nil, nil - } - - // Get all pods created by this deployment - pods, err := kc.getPods(envNS, deploy.currentUID) - if err != nil { - return nil, err - } - // Get the status of each pod in the deployment - podStats, err := kc.getPodStatus(pods) - if err != nil { - return nil, err - } - - verString := string(deploy.appVersion) - result := &app.SimpleDeploymentV1{ - Name: &envName, - Version: &verString, - Pods: podStats, - } - 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.SimpleDeploymentStatsV1, error) { - envNS, err := kc.getEnvironmentNamespace(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 || len(deploy.currentUID) == 0 { - return nil, nil - } - - // Get pods belonging to current deployment - pods, err := kc.getPods(envNS, deploy.currentUID) - if err != nil { - return nil, err - } - - // Gather the statistics we need about the current deployment - cpuUsage, err := kc.GetCPUMetrics(pods, envNS, startTime) - if err != nil { - return nil, err - } - memoryUsage, err := kc.GetMemoryMetrics(pods, envNS, startTime) - if err != nil { - return nil, err - } - netTxUsage, err := kc.GetNetworkSentMetrics(pods, envNS, startTime) - if err != nil { - return nil, err - } - netRxUsage, err := kc.GetNetworkRecvMetrics(pods, envNS, startTime) - if err != nil { - return nil, err - } - - result := &app.SimpleDeploymentStatsV1{ - 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.SimpleDeploymentStatSeriesV1, error) { - envNS, err := kc.getEnvironmentNamespace(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 || len(deploy.currentUID) == 0 { - return nil, nil - } - - // Get pods belonging to current deployment - pods, err := kc.getPods(envNS, deploy.currentUID) - if err != nil { - return nil, err - } - - // Get CPU, memory and network metrics for pods in deployment - cpuMetrics, err := kc.GetCPUMetricsRange(pods, envNS, startTime, endTime, limit) - if err != nil { - return nil, err - } - memoryMetrics, err := kc.GetMemoryMetricsRange(pods, envNS, startTime, endTime, limit) - if err != nil { - return nil, err - } - netTxMetrics, err := kc.GetNetworkSentMetricsRange(pods, envNS, startTime, endTime, limit) - if err != nil { - return nil, err - } - netRxMetrics, err := kc.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.SimpleDeploymentStatSeriesV1{ - Cores: cpuMetrics, - Memory: memoryMetrics, - NetTx: netTxMetrics, - NetRx: netRxMetrics, - Start: minTime, - End: maxTime, - } - - return result, nil -} - -// GetEnvironments retrieves information on all environments in the cluster -// for the current user -func (kc *kubeClient) GetEnvironments() ([]*app.SimpleEnvironmentV1, error) { - envs := make([]*app.SimpleEnvironmentV1, 0) - for envName := range kc.envMap { - 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.SimpleEnvironmentV1, error) { - envNS, err := kc.getEnvironmentNamespace(envName) - if err != nil { - return nil, err - } - - envStats, err := kc.getResourceQuota(envNS) - if err != nil { - return nil, err - } - - env := &app.SimpleEnvironmentV1{ - Name: &envName, - Quota: envStats, - } - return env, nil -} - -func getMetricsURLFromAPIURL(apiURLStr string) (string, error) { - // Parse as URL to give us easy access to the hostname - apiURL, err := url.Parse(apiURLStr) - if err != nil { - return "", err - } - - // Get the hostname (without port) and replace api prefix with metrics - apiHostname := apiURL.Hostname() - if !strings.HasPrefix(apiHostname, "api") { - return "", errors.New("Cluster URL does not begin with \"api\": " + apiHostname) - } - metricsHostname := strings.Replace(apiHostname, "api", "metrics", 1) - // Construct URL using just scheme from API URL and metrics hostname - metricsURL := url.URL{ - Scheme: apiURL.Scheme, - Host: metricsHostname, - } - return metricsURL.String(), nil -} - -func getTimestampEndpoints(metricsSeries ...[]*app.TimedNumberTupleV1) (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 -} - -func (kc *kubeClient) getBuildConfigs(space string) ([]string, error) { - - // hook for testing - if kc.config.BuildConfigInterface != nil { - return kc.config.BuildConfigInterface.GetBuildConfigs(space) - } - - // 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 - queryParam := url.QueryEscape("space=" + space) - bcURL := fmt.Sprintf("/oapi/v1/namespaces/%s/buildconfigs?labelSelector=%s", kc.config.UserNamespace, queryParam) - result, err := kc.getResource(bcURL, false) - if err != nil { - return nil, err - } - // Parse build configs from result - kind, ok := result["kind"].(string) - if !ok || kind != "BuildConfigList" { - return nil, errors.New("No build configs returned from endpoint") - } - items, ok := result["items"].([]interface{}) - if !ok { - return nil, errors.New("Malformed response from endpoint") - } - - // Extract the names of the BuildConfigs from the response - buildconfigs := make([]string, 0) - for _, item := range items { - bc, ok := item.(map[interface{}]interface{}) - if !ok { - return nil, errors.New("Malformed build config") - } - metadata, ok := bc["metadata"].(map[interface{}]interface{}) - if !ok { - return nil, errors.New("Metadata missing from build config") - } - name, ok := metadata["name"].(string) - if !ok || len(name) == 0 { - return nil, errors.New("Malformed metadata in build config") - } - buildconfigs = append(buildconfigs, name) - } - return buildconfigs, nil -} - -func (kc *kubeClient) getEnvironmentsFromConfigMap() (map[string]string, error) { - // fabric8 creates a ConfigMap in the user namespace with information on environments - const envConfigMap string = "fabric8-environments" - const providerLabel string = "fabric8" - configmap, err := kc.ConfigMaps(kc.config.UserNamespace).Get(envConfigMap, metaV1.GetOptions{}) - if err != nil { - return nil, err - } - // Check that config map has the expected label - if configmap.Labels["provider"] != providerLabel { - return nil, errors.New("Unknown or missing provider for environments config map") - } - // Parse config map data to construct environments map - envMap := make(map[string]string) - const namespaceProp string = "namespace" - // Config map keys are environment names - for key, value := range configmap.Data { - // Look through value for namespace property - var namespace string - lines := strings.Split(value, "\n") - for _, line := range lines { - if strings.HasPrefix(line, namespaceProp) { - tokens := strings.SplitN(line, ":", 2) - if len(tokens) < 2 { - return nil, errors.New("Malformed environments config map") - } - namespace = strings.TrimSpace(tokens[1]) - } - } - if len(namespace) == 0 { - return nil, errors.New("No namespace for environment " + key + " in config map") - } - envMap[key] = namespace - } - return envMap, nil -} - -func (kc *kubeClient) getEnvironmentNamespace(envName string) (string, error) { - envNS, pres := kc.envMap[envName] - if !pres { - return "", errors.New("Unknown environment: " + envName) - } - return envNS, nil -} - -// Derived from: https://github.com/fabric8-services/fabric8-tenant/blob/master/openshift/kube_token.go -func (kc *kubeClient) putResource(url string, putBody []byte) (*string, error) { - fullURL := strings.TrimSuffix(kc.config.ClusterURL, "/") + url - req, err := http.NewRequest("PUT", fullURL, bytes.NewBuffer(putBody)) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", "application/yaml") - req.Header.Set("Accept", "application/yaml") - req.Header.Set("Authorization", "Bearer "+kc.config.BearerToken) - - client := http.DefaultClient - resp, err := client.Do(req) - if err != nil { - return nil, err - } - - defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - status := resp.StatusCode - if httpStatusFailed(status) { - return nil, fmt.Errorf("Failed to PUT url %s: status code %d", fullURL, status) - } - bodyStr := string(body) - return &bodyStr, nil -} - -func (kc *kubeClient) getDeploymentConfig(namespace string, appName string, space string) (*deployment, error) { - dcURL := fmt.Sprintf("/oapi/v1/namespaces/%s/deploymentconfigs/%s", namespace, appName) - result, err := kc.getResource(dcURL, true) - 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, errors.New("No deployment config returned from endpoint") - } - metadata, ok := result["metadata"].(map[interface{}]interface{}) - if !ok { - return nil, errors.New("Metadata missing from deployment config") - } - // Check the space label is what we expect - labels, ok := metadata["labels"].(map[interface{}]interface{}) - if !ok { - return nil, errors.New("Labels missing from deployment config") - } - spaceLabel, ok := labels["space"].(string) - if !ok || len(spaceLabel) == 0 { - return nil, errors.New("Space label missing from deployment config") - } - if spaceLabel != space { - return nil, errors.New("Deployment config " + appName + " is part of space " + - spaceLabel + ", expected space " + space) - } - // Get UID from deployment config - uid, ok := metadata["uid"].(string) - if !ok || len(uid) == 0 { - return nil, errors.New("Malformed metadata in deployment config") - } - // Read application version from label - version := labels["version"].(string) - if !ok || len(version) == 0 { - return nil, errors.New("Version missing from deployment config") - } - - dc := &deployment{ - dcUID: types.UID(uid), - appVersion: version, - } - return dc, nil -} - -func (kc *kubeClient) getCurrentDeployment(space string, appName string, namespace string) (*deployment, error) { - // Look up DeploymentConfig corresponding to the application name in the provided environment - result, err := kc.getDeploymentConfig(namespace, appName, 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.dcUID) - 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#L658 - const deploymentPhaseAnnotation string = "openshift.io/deployment.phase" - var newest *v1.ReplicationController - for idx := range rcs { - rc := &rcs[idx] - if newest == nil || newest.CreationTimestamp.Before(rc.CreationTimestamp) { - newest = rc - } - } - if newest != nil { - result.currentUID = newest.UID - } - return result, nil -} - -func (kc *kubeClient) getReplicationControllers(namespace string, dcUID types.UID) ([]v1.ReplicationController, error) { - rcs, err := kc.ReplicationControllers(namespace).List(metaV1.ListOptions{}) - if err != nil { - return nil, err - } - - // Current Kubernetes concept used to represent OpenShift Deployments - rcsForDc := make([]v1.ReplicationController, 0) - 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 == dcUID && ref.Controller != nil && *ref.Controller { - match = true - } - } - if match { - rcsForDc = append(rcsForDc, rc) - } - } - - return rcsForDc, nil -} - -func (kc *kubeClient) getResourceQuota(namespace string) (*app.EnvStatsV1, error) { - const computeResources string = "compute-resources" - quota, err := kc.ResourceQuotas(namespace).Get(computeResources, metaV1.GetOptions{}) - if err != nil { - return nil, err - } else if quota == nil { - return nil, errors.New("No resource quota with name: " + computeResources) - } - - // Convert quantities to floating point, as this should provide enough - // precision in practice - cpuLimit, err := quantityToFloat64(quota.Status.Hard[v1.ResourceLimitsCPU]) - if err != nil { - return nil, err - } - cpuUsed, err := quantityToFloat64(quota.Status.Used[v1.ResourceLimitsCPU]) - if err != nil { - return nil, err - } - - cpuStats := &app.EnvStatCoresV1{ - Quota: &cpuLimit, - Used: &cpuUsed, - } - - memLimit, err := quantityToFloat64(quota.Status.Hard[v1.ResourceLimitsMemory]) - if err != nil { - return nil, err - } - - memUsed, err := quantityToFloat64(quota.Status.Used[v1.ResourceLimitsMemory]) - if err != nil { - return nil, err - } - - memUnits := "bytes" - memStats := &app.EnvStatMemoryV1{ - Quota: &memLimit, - Used: &memUsed, - Units: &memUnits, - } - - result := &app.EnvStatsV1{ - Cpucores: cpuStats, - Memory: memStats, - } - - return result, 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, errors.New(valDec.String() + " cannot be represented as 64-bit integer") - } - // From dec.go: The mathematical value of a Dec equals: unscaled * 10**(-scale) - result = float64(val64) * math.Pow10(-int(valDec.Scale())) - } - return result, nil -} - -// GetPodsInNamespace - return all pods in namepsace 'nameSpace' and application 'appName' -func (kc *kubeClient) GetPodsInNamespace(nameSpace string, appName string) ([]v1.Pod, error) { - listOptions := metaV1.ListOptions{ - LabelSelector: "app=" + appName, - } - pods, err := kc.Pods(nameSpace).List(listOptions) - if err != nil { - return nil, err - } - return pods.Items, nil -} - -func (kc *kubeClient) getPods(namespace string, uid types.UID) ([]v1.Pod, error) { - pods, err := kc.Pods(namespace).List(metaV1.ListOptions{}) - if err != nil { - return nil, err - } - - appPods := make([]v1.Pod, 0) - for _, 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 == uid && ref.Controller != nil && *ref.Controller { - match = true - } - } - if match { - appPods = append(appPods, pod) - } - } - - return appPods, nil -} - -func (kc *kubeClient) getPodStatus(pods []v1.Pod) (*app.PodStatsV1, error) { - var starting, running, stopping int - /* - * TODO Logic for pod phases in web console is calculated in the UI: - * 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 - * Should we duplicate the logic here in Go, opt for simpler phases (perhaps just PodPhase), or send Pod as JSON to fabric8-ui - * to reuse JS components - * const phases = []string{"Running", "Not Ready", "Warning", "Error", "Pulling", "Pending", "Succeeded", "Terminating", "Unknown"} - */ - for _, pod := range pods { - // Terminating pods have a deletionTimeStamp set - if pod.ObjectMeta.DeletionTimestamp != nil { - stopping++ - } else if pod.Status.Phase == v1.PodPending { - // TODO Is this a good approximation of "Starting"? - starting++ - } else if pod.Status.Phase == v1.PodRunning { - running++ - } else { - // TODO Handle other phases - } - } - - total := len(pods) - result := &app.PodStatsV1{ - Starting: &starting, - Running: &running, - Stopping: &stopping, - Total: &total, - } - - return result, nil -} - -// Derived from: https://github.com/fabric8-services/fabric8-tenant/blob/master/openshift/kube_token.go -func (kc *kubeClient) getResource(url string, allowMissing bool) (map[interface{}]interface{}, error) { - var body []byte - fullURL := strings.TrimSuffix(kc.config.ClusterURL, "/") + url - req, err := http.NewRequest("GET", fullURL, bytes.NewReader(body)) - if err != nil { - return nil, err - } - req.Header.Set("Accept", "application/yaml") - req.Header.Set("Authorization", "Bearer "+kc.config.BearerToken) - - client := http.DefaultClient - resp, err := client.Do(req) - if err != nil { - return nil, 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 httpStatusFailed(status) { - return nil, fmt.Errorf("Failed to GET url %s due to status code %d", fullURL, status) - } - var respType map[interface{}]interface{} - err = yaml.Unmarshal(b, &respType) - if err != nil { - return nil, err - } - return respType, nil -} - -func httpStatusFailed(status int) bool { - // if status is not between 200-299 then it's an error - return status < http.StatusOK || status >= http.StatusMultipleChoices -} diff --git a/kubernetesV1/apps_kubeclient_blackbox_test.go b/kubernetesV1/apps_kubeclient_blackbox_test.go deleted file mode 100644 index ba61b3945d..0000000000 --- a/kubernetesV1/apps_kubeclient_blackbox_test.go +++ /dev/null @@ -1,479 +0,0 @@ -package kubernetesV1_test - -import ( - "strconv" - "testing" - "time" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - "github.com/fabric8-services/fabric8-wit/app" - "github.com/fabric8-services/fabric8-wit/kubernetesV1" - resource "k8s.io/apimachinery/pkg/api/resource" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - v1 "k8s.io/client-go/pkg/api/v1" -) - -// Used for equality comparisons between float64s -const fltEpsilon = 0.00000001 - -type testKube struct { - kubernetesV1.KubeRESTAPI // Allows us to only implement methods we'll use - getter *testKubeGetter - configMapHolder *testConfigMap - quotaHolder *testResourceQuota -} - -type testKubeGetter struct { - cmInput *configMapInput - rqInput *resourceQuotaInput - result *testKube -} - -// Config Maps fakes - -type configMapInput struct { - data map[string]string - labels map[string]string - shouldFail bool -} - -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", - }, -} - -type testConfigMap struct { - corev1.ConfigMapInterface - input *configMapInput - namespace string - configMap *v1.ConfigMap -} - -func (tk *testKube) ConfigMaps(ns string) corev1.ConfigMapInterface { - input := tk.getter.cmInput - if input == nil { - input = defaultConfigMapInput - } - result := &testConfigMap{ - input: input, - namespace: ns, - } - tk.configMapHolder = result - return result -} - -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 -} - -// Resource Quota fakes - -type resourceQuotaInput struct { - name string - namespace string - hard map[v1.ResourceName]float64 - used map[v1.ResourceName]float64 - shouldFail bool -} - -var defaultResourceQuotaInput *resourceQuotaInput = &resourceQuotaInput{ - name: "run", - namespace: "my-run", - hard: map[v1.ResourceName]float64{ - v1.ResourceLimitsCPU: 0.7, - v1.ResourceLimitsMemory: 1024, - }, - used: map[v1.ResourceName]float64{ - v1.ResourceLimitsCPU: 0.4, - v1.ResourceLimitsMemory: 512, - }, -} - -type testResourceQuota struct { - corev1.ResourceQuotaInterface - input *resourceQuotaInput - namespace string - quota *v1.ResourceQuota -} - -func (tk *testKube) ResourceQuotas(ns string) corev1.ResourceQuotaInterface { - input := tk.getter.rqInput - if input == nil { - input = defaultResourceQuotaInput - } - result := &testResourceQuota{ - input: input, - namespace: ns, - } - tk.quotaHolder = result - return result -} - -func (rq *testResourceQuota) Get(name string, options metav1.GetOptions) (*v1.ResourceQuota, error) { - if rq.input.hard == nil || rq.input.used == nil { // Used to indicate no quota object - return nil, nil - } - hardQuantity, err := stringToQuantityMap(rq.input.hard) - if err != nil { - return nil, err - } - usedQuantity, err := stringToQuantityMap(rq.input.used) - if err != nil { - return nil, err - } - result := &v1.ResourceQuota{ - ObjectMeta: metav1.ObjectMeta{ - Name: name, - }, - Status: v1.ResourceQuotaStatus{ - Hard: hardQuantity, - Used: usedQuantity, - }, - } - rq.quota = result - return result, nil -} - -func stringToQuantityMap(input map[v1.ResourceName]float64) (v1.ResourceList, error) { - result := make(map[v1.ResourceName]resource.Quantity) - for k, v := range input { - strVal := strconv.FormatFloat(v, 'f', -1, 64) - q, err := resource.ParseQuantity(strVal) - if err != nil { - return nil, err - } - result[k] = q - } - return result, nil -} - -func (getter *testKubeGetter) GetKubeRESTAPI(config *kubernetesV1.KubeClientConfig) (kubernetesV1.KubeRESTAPI, error) { - mock := new(testKube) - // Doubly-linked for access by tests - mock.getter = getter - getter.result = mock - return mock, nil -} - -type testMetricsGetter struct { - config *kubernetesV1.MetricsClientConfig - result *testMetrics -} - -type testMetrics struct { - closed bool -} - -func (getter *testMetricsGetter) GetMetrics(config *kubernetesV1.MetricsClientConfig) (kubernetesV1.MetricsInterface, error) { - getter.config = config - getter.result = &testMetrics{} - return getter.result, nil -} - -func (tm *testMetrics) Close() { - tm.closed = true -} - -func (tm *testMetrics) GetCPUMetrics(pods []v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTupleV1, error) { - return nil, nil // TODO -} - -func (tm *testMetrics) GetCPUMetricsRange(pods []v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTupleV1, error) { - return nil, nil // TODO -} - -func (tm *testMetrics) GetMemoryMetrics(pods []v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTupleV1, error) { - return nil, nil // TODO -} - -func (tm *testMetrics) GetMemoryMetricsRange(pods []v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTupleV1, error) { - return nil, nil // TODO -} - -func (testMetrics) GetNetworkSentMetrics(pods []v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTupleV1, error) { - return nil, nil // TODO add fake impl when tests exercise this code -} - -func (testMetrics) GetNetworkSentMetricsRange(pods []v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTupleV1, error) { - return nil, nil // TODO add fake impl when tests exercise this code -} - -func (testMetrics) GetNetworkRecvMetrics(pods []v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTupleV1, error) { - return nil, nil // TODO add fake impl when tests exercise this code -} - -func (testMetrics) GetNetworkRecvMetricsRange(pods []v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTupleV1, error) { - return nil, nil // TODO add fake impl when tests exercise this code -} - -func TestGetMetrics(t *testing.T) { - kubeGetter := &testKubeGetter{ - cmInput: defaultConfigMapInput, - } - metricsGetter := &testMetricsGetter{} - - token := "myToken" - testCases := []struct { - clusterURL string - expectedURL string - shouldSucceed bool - }{ - {"https://api.myCluster.url:443/cluster", "https://metrics.myCluster.url", true}, - {"https://myCluster.url:443/cluster", "", false}, - } - - for _, testCase := range testCases { - config := &kubernetesV1.KubeClientConfig{ - ClusterURL: testCase.clusterURL, - BearerToken: token, - UserNamespace: "myNamespace", - KubeRESTAPIGetter: kubeGetter, - MetricsGetter: metricsGetter, - } - _, err := kubernetesV1.NewKubeClient(config) - if testCase.shouldSucceed { - if err != nil { - t.Fatal(err) - } - - assert.Equal(t, testCase.expectedURL, metricsGetter.config.MetricsURL, "Incorrect Metrics URL") - assert.Equal(t, token, metricsGetter.config.BearerToken, "Incorrect bearer token") - } else { - if err == nil { - t.Error("Expected error, but was successful") - } - } - } -} - -func TestClose(t *testing.T) { - kubeGetter := &testKubeGetter{} - metricsGetter := &testMetricsGetter{} - - config := &kubernetesV1.KubeClientConfig{ - ClusterURL: "http://api.myCluster", - BearerToken: "myToken", - UserNamespace: "myNamespace", - KubeRESTAPIGetter: kubeGetter, - MetricsGetter: metricsGetter, - } - client, err := kubernetesV1.NewKubeClient(config) - require.NoError(t, err, "Failed to create Kubernetes client") - - // Check that KubeClientInterface.Close invokes MetricsInterface.Close - client.Close() - assert.True(t, metricsGetter.result.closed, "Metrics client not closed") -} - -func TestConfigMapEnvironments(t *testing.T) { - testCases := []*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", - }, - }, - { - labels: map[string]string{"provider": "fabric8"}, - data: map[string]string{}, - }, - { - labels: map[string]string{"provider": "fabric8"}, - data: map[string]string{ - "run": "name: Run\nnamespace my-run\norder: 1", // Missing colon - }, - shouldFail: true, - }, - { - labels: map[string]string{"provider": "fabric8"}, - data: map[string]string{ - "run": "name: Run\nns: my-run\norder: 1", // Missing namespace - }, - shouldFail: true, - }, - { - shouldFail: true, // No provider - }, - } - kubeGetter := &testKubeGetter{} - metricsGetter := &testMetricsGetter{} - userNamespace := "myNamespace" - config := &kubernetesV1.KubeClientConfig{ - ClusterURL: "http://api.myCluster", - BearerToken: "myToken", - UserNamespace: userNamespace, - KubeRESTAPIGetter: kubeGetter, - MetricsGetter: metricsGetter, - } - - expectedName := "fabric8-environments" - for _, testCase := range testCases { - kubeGetter.cmInput = testCase - _, err := kubernetesV1.NewKubeClient(config) - if testCase.shouldFail { - assert.Error(t, err) - } else { - if !assert.NoError(t, err) { - continue - } - configMapHolder := kubeGetter.result.configMapHolder - if !assert.NotNil(t, configMapHolder, "No ConfigMap created by test") { - continue - } - assert.Equal(t, userNamespace, configMapHolder.namespace, "ConfigMap obtained from wrong namespace") - configMap := configMapHolder.configMap - if !assert.NotNil(t, configMap, "Never sent ConfigMap GET") { - continue - } - assert.Equal(t, expectedName, configMap.Name, "Incorrect ConfigMap name") - } - } -} - -func TestGetEnvironment(t *testing.T) { - testCases := []*resourceQuotaInput{ - { - name: "run", - namespace: "my-run", - hard: map[v1.ResourceName]float64{ - v1.ResourceLimitsCPU: 0.7, - v1.ResourceLimitsMemory: 1024, - }, - used: map[v1.ResourceName]float64{ - v1.ResourceLimitsCPU: 0.4, - v1.ResourceLimitsMemory: 512, - }, - }, - { - name: "doesNotExist", // Bad environment name - namespace: "my-run", - hard: map[v1.ResourceName]float64{ - v1.ResourceLimitsCPU: 0.7, - v1.ResourceLimitsMemory: 1024, - }, - used: map[v1.ResourceName]float64{ - v1.ResourceLimitsCPU: 0.4, - v1.ResourceLimitsMemory: 512, - }, - shouldFail: true, - }, - { - name: "run", - namespace: "my-run", - shouldFail: true, // No quantities, so our test impl returns nil - }, - } - kubeGetter := &testKubeGetter{} - metricsGetter := &testMetricsGetter{} - config := &kubernetesV1.KubeClientConfig{ - ClusterURL: "http://api.myCluster", - BearerToken: "myToken", - UserNamespace: "myNamespace", - KubeRESTAPIGetter: kubeGetter, - MetricsGetter: metricsGetter, - } - - kc, err := kubernetesV1.NewKubeClient(config) - assert.NoError(t, err) - for _, testCase := range testCases { - kubeGetter.rqInput = testCase - env, err := kc.GetEnvironment(testCase.name) - if testCase.shouldFail { - assert.Error(t, err) - } else { - if !assert.NoError(t, err) { - continue - } - - quotaHolder := kubeGetter.result.quotaHolder - if !assert.NotNil(t, quotaHolder, "No ResourceQuota created by test") { - continue - } - assert.Equal(t, testCase.namespace, quotaHolder.namespace, "Quota retrieved from wrong namespace") - quota := quotaHolder.quota - if !assert.NotNil(t, quota, "Never sent ResourceQuota GET") { - continue - } - assert.Equal(t, "compute-resources", quota.Name, "Wrong ResourceQuota name") - assert.Equal(t, testCase.name, *env.Name, "Wrong environment name") - - cpuQuota := env.Quota.Cpucores - assert.InEpsilon(t, testCase.hard[v1.ResourceLimitsCPU], *cpuQuota.Quota, fltEpsilon, "Incorrect CPU quota") - assert.InEpsilon(t, testCase.used[v1.ResourceLimitsCPU], *cpuQuota.Used, fltEpsilon, "Incorrect CPU usage") - - memQuota := env.Quota.Memory - assert.InEpsilon(t, testCase.hard[v1.ResourceLimitsMemory], *memQuota.Quota, fltEpsilon, "Incorrect memory quota") - assert.InEpsilon(t, testCase.used[v1.ResourceLimitsMemory], *memQuota.Used, fltEpsilon, "Incorrect memory usage") - } - } -} - -type spaceTestData struct { - kubernetesV1.BuildConfigInterface - name string - shouldFail bool - configs *[]string -} - -func (sp spaceTestData) GetBuildConfigs(space string) ([]string, error) { - if sp.configs == nil { - return nil, nil - } - return *sp.configs, nil -} - -func TestGetSpaceWithNoConfigs(t *testing.T) { - testCases := []*spaceTestData{ - { - name: "nilCfg", // Bad environment name - configs: nil, - shouldFail: false, - }, - } - - for _, testCase := range testCases { - kubeGetter := &testKubeGetter{} - metricsGetter := &testMetricsGetter{} - cfgGetter := testCase - config := &kubernetesV1.KubeClientConfig{ - ClusterURL: "http://api.myCluster", - BearerToken: "myToken", - UserNamespace: "myNamespace", - KubeRESTAPIGetter: kubeGetter, - MetricsGetter: metricsGetter, - BuildConfigInterface: cfgGetter, - } - - kc, err := kubernetesV1.NewKubeClient(config) - - assert.NoError(t, err) - space, err := kc.GetSpace(testCase.name) - if testCase.shouldFail { - assert.Error(t, err) - } else { - if !assert.NoError(t, err) { - continue - } - assert.NotNil(t, space.Applications) - } - } -} diff --git a/kubernetesV1/apps_metrics.go b/kubernetesV1/apps_metrics.go deleted file mode 100644 index fcd6dc3c12..0000000000 --- a/kubernetesV1/apps_metrics.go +++ /dev/null @@ -1,300 +0,0 @@ -package kubernetesV1 - -import ( - "strings" - "time" - - "github.com/fabric8-services/fabric8-wit/app" - hawkular "github.com/hawkular/hawkular-client-go/metrics" - 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) -} - -// MetricsInterface provides methods to obtain performance metrics of a deployed application -type MetricsInterface interface { - GetCPUMetrics(pods []v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTupleV1, error) - GetCPUMetricsRange(pods []v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTupleV1, error) - GetMemoryMetrics(pods []v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTupleV1, error) - GetMemoryMetricsRange(pods []v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTupleV1, error) - GetNetworkSentMetrics(pods []v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTupleV1, error) - GetNetworkSentMetricsRange(pods []v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTupleV1, error) - GetNetworkRecvMetrics(pods []v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTupleV1, error) - GetNetworkRecvMetricsRange(pods []v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTupleV1, 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 - -// NewMetricsClient creates a MetricsInterface given a configuration -func NewMetricsClient(config *MetricsClientConfig) (MetricsInterface, 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) { - params := hawkular.Parameters{ - Url: config.MetricsURL, - Token: config.BearerToken, - } - client, err := hawkular.NewHawkularClient(params) - if err != nil { - return nil, 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.TimedNumberTupleV1, 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.TimedNumberTupleV1, error) { - buckets, err := mc.getBucketsInRange(pods, namespace, cpuDesc, startTime, endTime, limit) - if err != nil { - return nil, err - } - - results := bucketsToTuples(buckets, millicoreToCoreScale) - return results, nil -} - -func (mc *metricsClient) GetMemoryMetrics(pods []v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTupleV1, 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.TimedNumberTupleV1, error) { - buckets, err := mc.getBucketsInRange(pods, namespace, memDesc, startTime, endTime, limit) - if err != nil { - return nil, err - } - - results := bucketsToTuples(buckets, noScale) - return results, nil -} - -func (mc *metricsClient) GetNetworkSentMetrics(pods []v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTupleV1, 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.TimedNumberTupleV1, 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.TimedNumberTupleV1, 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.TimedNumberTupleV1, 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.TimedNumberTupleV1 { - results := make([]*app.TimedNumberTupleV1, len(buckets)) - for idx, bucket := range buckets { - results[idx] = bucketToTuple(bucket, scale) - } - return results -} - -func bucketToTuple(bucket *hawkular.Bucketpoint, scale float64) *app.TimedNumberTupleV1 { - // 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.TimedNumberTupleV1{ - 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.TimedNumberTupleV1, error) { - result, err := mc.getLatestBucket(pods, namespace, descTag, startTime) - if err != nil { - return nil, 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, 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, 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/kubernetesV1/apps_metrics_blackbox_test.go b/kubernetesV1/apps_metrics_blackbox_test.go deleted file mode 100644 index 1f43c98af2..0000000000 --- a/kubernetesV1/apps_metrics_blackbox_test.go +++ /dev/null @@ -1,414 +0,0 @@ -package kubernetesV1_test - -import ( - "net/http" - "net/url" - "strconv" - "strings" - "testing" - "time" - - "github.com/fabric8-services/fabric8-wit/app" - "github.com/fabric8-services/fabric8-wit/kubernetesV1" - hawkular "github.com/hawkular/hawkular-client-go/metrics" - "github.com/stretchr/testify/assert" - "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 *kubernetesV1.MetricsClientConfig) (kubernetesV1.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 := &kubernetesV1.MetricsClientConfig{ - MetricsURL: "myMetricsServer", - BearerToken: "token", - HawkularGetter: test, - } - client, err := kubernetesV1.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) - if !assert.NoError(t, err, "Getting network metrics failed") || - !assert.NotNil(t, metric, "Nil result from network metrics") { - continue - } - - // Check that the result has the correct value and timestamp and that the Hawkular API was called - // with the expected values - metrics := []*app.TimedNumberTupleV1{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 := &kubernetesV1.MetricsClientConfig{ - MetricsURL: "myMetricsServer", - BearerToken: "token", - HawkularGetter: test, - } - client, err := kubernetesV1.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) - if !assert.NoError(t, err, "Getting network metrics failed") || - !assert.NotNil(t, metrics, "Nil result from network metrics") { - continue - } - - // 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 := &kubernetesV1.MetricsClientConfig{ - MetricsURL: "myMetricsServer", - BearerToken: "token", - HawkularGetter: test, - } - client, err := kubernetesV1.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) - if !assert.NoError(t, err, "Getting network metrics failed") || - !assert.NotNil(t, metric, "Nil result from network metrics") { - continue - } - - // Check that the result has the correct value and timestamp and that the Hawkular API was called - // with the expected values - metrics := []*app.TimedNumberTupleV1{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 := &kubernetesV1.MetricsClientConfig{ - MetricsURL: "myMetricsServer", - BearerToken: "token", - HawkularGetter: test, - } - client, err := kubernetesV1.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, 0) - if !assert.NoError(t, err, "Getting network metrics failed") || - !assert.NotNil(t, metrics, "Nil result from network metrics") { - continue - } - - // 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 := &kubernetesV1.MetricsClientConfig{ - MetricsURL: "myMetricsServer", - BearerToken: "token", - HawkularGetter: test, - } - client, err := kubernetesV1.NewMetricsClient(config) - require.NoError(t, err, "Failed to create metrics client") - - // Check that MetricsInterface.Close invokes Hawkular's Client.Close - client.Close() - assert.True(t, test.result.output.closed, "Hawkular client not closed") -} - -func verifyMetrics(metrics []*app.TimedNumberTupleV1, 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 && !assert.True(t, numMetrics <= testCase.limit, "Too many metrics returned") { - return - } - - // 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] - if !assert.NotNil(t, metric.Value, "Nil value in network metric") || - !assert.InEpsilon(t, bucket.Avg, *metric.Value, fltEpsilon, "Incorrect value in network metric") || - !assert.NotNil(t, metric.Time, "Nil time in network metric") || - !assert.InEpsilon(t, hawkular.ToUnixMilli(bucket.Start), *metric.Time, fltEpsilon, "Incorrect time in network metric") { - return - } - } - - // Check that ReadBuckets was called with the correct inputs - if !assert.Equal(t, testCase.namespace, result.namespace, "ReadBuckets called with incorrect namespace") || - !assert.Equal(t, hawkular.Gauge, result.metricType, "Incorrect Hawkular metric type") { - return - } - - // 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 { - assert.Equal(t, value, tags[key], "Tag mismatch") - } -} - -func verifySingleMetricFilters(testCase *testMetricsInput, filters url.Values, t *testing.T) { - assert.Equal(t, "1", filters.Get("buckets"), "Buckets parameter missing or incorrect") - assert.Equal(t, strconv.FormatInt(hawkular.ToUnixMilli(testCase.startTime), 10), - filters.Get("start"), "Start parameter missing or incorrect") - assert.Equal(t, strconv.FormatInt(hawkular.ToUnixMilli(testCase.startTime.Add(time.Minute)), 10), - filters.Get("end"), "End parameter missing or incorrect") - assert.Equal(t, "true", filters.Get("stacked"), "Stacked parameter missing or incorrect") -} - -func verifyMetricRangeFilters(testCase *testMetricsInput, filters url.Values, t *testing.T) { - assert.Equal(t, "60000ms", filters.Get("bucketDuration"), "BucketDuration parameter missing or incorrect") - assert.Equal(t, strconv.FormatInt(hawkular.ToUnixMilli(testCase.startTime), 10), - filters.Get("start"), "Start parameter missing or incorrect") - assert.Equal(t, strconv.FormatInt(hawkular.ToUnixMilli(testCase.endTime), 10), - filters.Get("end"), "End parameter missing or incorrect") - assert.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) - assert.Len(t, tagSplit, 2, "Tag in wrong format") - tagMap[tagSplit[0]] = tagSplit[1] - } - return tagMap -} diff --git a/main.go b/main.go index 55b8ebe99f..c8d2e330b8 100644 --- a/main.go +++ b/main.go @@ -293,10 +293,6 @@ func main() { userServiceCtrl.ShowTenant = account.NewShowTenant(config) app.MountUserServiceController(service, userServiceCtrl) - // Mount "apps" controller - appsCtrl := controller.NewAppsController(service, config) - app.MountAppsController(service, appsCtrl) - // Mount "deployments" controller deploymentsCtrl := controller.NewDeploymentsController(service, config) app.MountDeploymentsController(service, deploymentsCtrl) From 8d58119fd974541d5daf2c400ab70ac8d60f8778 Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Fri, 3 Aug 2018 08:59:09 -0400 Subject: [PATCH 03/36] new auth JSON API code prototype --- controller/deployments.go | 14 ++++++++++++++ design/deployments.go | 13 ++++++++++--- design/permissions.go | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 design/permissions.go diff --git a/controller/deployments.go b/controller/deployments.go index 7dd3db864c..b32cc4fdad 100644 --- a/controller/deployments.go +++ b/controller/deployments.go @@ -3,18 +3,22 @@ package controller import ( "context" "encoding/json" + "fmt" "net/url" "os" "time" "github.com/fabric8-services/fabric8-wit/app" + witclient "github.com/fabric8-services/fabric8-wit/client" "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/fabric8-services/fabric8-wit/rest" "github.com/goadesign/goa" + goauuid "github.com/goadesign/goa/uuid" errs "github.com/pkg/errors" uuid "github.com/satori/go.uuid" ) @@ -349,6 +353,16 @@ func (c *DeploymentsController) ShowSpace(ctx *app.ShowSpaceDeploymentsContext) // Kubernetes doesn't know about space ID, so add it here space.ID = ctx.SpaceID + guid := goauuid.UUID(ctx.SpaceID) + spaceURLStr := rest.AbsoluteURL(ctx.Request, fmt.Sprintf(witclient.ShowSpacePath(guid))) + space.Links = &app.SimpleSpaceLinks{ + Space: &app.LinkWithAccess{ + Href: &spaceURLStr, + Meta: &app.EndpointAccess{ + Methods: []string{"GET", "POST", "DELETE", "PATCH"}, + }, + }, + } res := &app.SimpleSpaceSingle{ Data: space, diff --git a/design/deployments.go b/design/deployments.go index 07254cc04b..8c322dbbcc 100644 --- a/design/deployments.go +++ b/design/deployments.go @@ -16,9 +16,16 @@ var simpleSpace = a.Type("SimpleSpace", func() { a.Example("40bbdd3d-8b5d-4fd6-ac90-7236b669af04") }) a.Attribute("attributes", simpleSpaceAttributes) + a.Attribute("links", simpleSpaceLinks) a.Required("type", "id", "attributes") }) +var simpleSpaceLinks = a.Type("SimpleSpaceLinks", func() { + a.Description(`relevant links for a space object`) + a.Attribute("space", linkWithAccess) + a.Required("space") +}) + var simpleSpaceAttributes = a.Type("SimpleSpaceAttributes", func() { a.Description(`a space consisting of multiple applications`) a.Attribute("name", d.String) @@ -60,7 +67,8 @@ 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) + a.Attribute("self", linkWithAccess) + //a.Required("self") }) var simpleDeploymentAttributes = a.Type("SimpleDeploymentAttributes", func() { @@ -71,8 +79,7 @@ var simpleDeploymentAttributes = a.Type("SimpleDeploymentAttributes", func() { 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") + a.Required("name", "pods") }) var podsQuota = a.Type("PodsQuota", func() { diff --git a/design/permissions.go b/design/permissions.go new file mode 100644 index 0000000000..9217b1c6e7 --- /dev/null +++ b/design/permissions.go @@ -0,0 +1,34 @@ +package design + +import ( + d "github.com/goadesign/goa/design" + a "github.com/goadesign/goa/design/apidsl" +) + +var elementAccess = a.Type("ElementAccess", func() { + a.Description(`defines access rights for an element in an object`) + a.Attribute("name", d.String) + a.Attribute("permissions", d.String, func() { + a.Enum("NA", "WRITE") + }) + a.Required("name", "permissions") +}) + +var internalAccess = a.Type("InternalAccess", func() { + a.Description(`defines access rights for all elements of an object`) + a.Attribute("access", a.ArrayOf(elementAccess)) + a.Required("access") +}) + +var endpointAccess = a.Type("EndpointAccess", func() { + a.Description(`defines access rights for HTTP methods on an endpoint`) + a.Attribute("methods", a.ArrayOf(d.String, func() { + a.Enum("GET", "PUT", "PATCH", "DELETE") + })) + a.Required("methods") +}) + +var linkWithAccess = a.Type("LinkWithAccess", func() { + a.Attribute("href", d.String, "URL for the link") + a.Attribute("meta", endpointAccess) +}) From d8c553e2cf6af63c5e66757e92cefa383854b5a5 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Tue, 24 Jul 2018 17:48:28 -0400 Subject: [PATCH 04/36] Initial implementation of OpenShift authz checking --- kubernetes/deployments_access.go | 240 + .../deployments_access_blackbox_test.go | 47 + kubernetes/deployments_kubeclient.go | 77 +- test/kubernetes/can-i.yaml | 8479 +++++++++++++++++ 4 files changed, 8819 insertions(+), 24 deletions(-) create mode 100644 kubernetes/deployments_access.go create mode 100644 kubernetes/deployments_access_blackbox_test.go create mode 100644 test/kubernetes/can-i.yaml diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go new file mode 100644 index 0000000000..7d5c13a48c --- /dev/null +++ b/kubernetes/deployments_access.go @@ -0,0 +1,240 @@ +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" +) + +type KubeAccessControl interface { + //CanGetSpace() (bool, error) + //CanGetApplication() (bool, error) + //CanGetDeployment() (bool, error) + //CanScaleDeployment(envName string) (bool, error) FIXME How will this work? Need deployment name? + //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{} + +// Checks the subject rules review for the desired actions on resources +func (rulesMap accessRules) isAuthorized(reqs []*requestedAccess) bool { + for _, req := range reqs { + // Look up rules for resource type + rules, pres := rulesMap[req.resource] + if !pres { + return false + } + // Check if all requested actions are permitted + for _, verb := range req.verbs { + _, pres := rules[verb] + if !pres { + return false + } + } + } + return true +} + +var getEnvironmentRules = []*requestedAccess{ + {qualifiedResource{"", "resourcequotas"}, []string{verbList, verbGet}}, +} + +func (kc *kubeClient) CanGetEnvironments() (bool, error) { + for envName := range kc.envMap { + ok, err := kc.CanGetEnvironment(envName) + if err != nil { + return false, err + } else if !ok { + return false, nil + } + } + return true, nil +} + +func (kc *kubeClient) CanGetEnvironment(envName string) (bool, error) { + rules, err := kc.getRulesForEnvironment(envName) + if err != nil { + return false, err + } + + ok := rules.isAuthorized(getEnvironmentRules) + return ok, nil +} + +// 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 + } + + // TODO Parse using info from https://github.com/openshift/api/blob/master/authorization/v1/types.go + status, ok := reviewResult["status"].(map[string]interface{}) + if !ok { + log.Error(nil, map[string]interface{}{ + "err": err, + "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{}{ + "err": err, + "namespace": namespace, + "response": reviewResult, + }, "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{}{ + "err": err, + "namespace": namespace, + "response": reviewResult, + }, "rules missing from SelfSubjectRulesReview") + 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 { + // If no groups are specified, the rule is for the default k8s/OpenShift API group + 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, 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 new file mode 100644 index 0000000000..356b9d907e --- /dev/null +++ b/kubernetes/deployments_access_blackbox_test.go @@ -0,0 +1,47 @@ +package kubernetes_test + +import ( + "testing" + + "github.com/dnaeon/go-vcr/recorder" + "github.com/stretchr/testify/require" +) + +func TestCanGetEnvironments(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + cassetteName: "can-i", + expectedResult: 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.CanGetEnvironments() + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go index 294f6b173e..da6ae95fb5 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -81,6 +81,7 @@ type KubeClientInterface interface { GetMetricsClient(envNS string) (Metrics, error) WatchEventsInNamespace(nameSpace string) (*cache.FIFO, chan struct{}) Close() + KubeAccessControl } type kubeClient struct { @@ -89,6 +90,7 @@ type kubeClient struct { BaseURLProvider KubeRESTAPI metricsMap map[string]Metrics + rulesMap map[string]*accessRules OpenShiftRESTAPI MetricsGetter } @@ -108,11 +110,12 @@ 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) 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{}) 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) 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 { @@ -191,9 +194,20 @@ func NewKubeClient(config *KubeClientConfig) (KubeClientInterface, error) { KubeRESTAPI: kubeAPI, OpenShiftRESTAPI: osAPI, metricsMap: make(map[string]Metrics), + rulesMap: make(map[string]*accessRules), MetricsGetter: config.MetricsGetter, } + rules, err := kubeClient.lookupAllRules(config.UserNamespace) // XXX + if err != nil { + return nil, err + } + fmt.Printf("%v\n", rules) // XXX + canGetEnv, err := kubeClient.CanGetEnvironment("run") + if err != nil { + return nil, err + } + fmt.Printf("CanGetEnvironment %v\n", canGetEnv) return kubeClient, nil } @@ -375,7 +389,7 @@ func (kc *kubeClient) ScaleDeployment(spaceName string, appName string, envName } spec["replicas"] = deployNumber - err = kc.SetDeploymentConfigScale(envNS, dcName, scale) + _, err = kc.SetDeploymentConfigScale(envNS, dcName, scale) if err != nil { return nil, err } @@ -396,7 +410,8 @@ func (oc *openShiftAPIClient) GetDeploymentConfigScale(namespace string, name st return oc.getResource(dcScalePath, false) } -func (oc *openShiftAPIClient) SetDeploymentConfigScale(namespace string, name string, scale map[string]interface{}) error { +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) } @@ -766,10 +781,10 @@ func (kc *kubeClient) getEnvironmentNamespace(envName string) (string, error) { } // 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{}) error { +func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody interface{}) (map[string]interface{}, error) { url, err := oc.config.GetAPIURL() if err != nil { - return err + return nil, err } fullURL := strings.TrimSuffix(*url, "/") + path @@ -779,8 +794,8 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i "err": err, "url": fullURL, "request_body": reqBody, - }, "could not marshall %s request", method) - return errs.WithStack(err) + }, "could not marshal %s request", method) + return nil, errs.WithStack(err) } req, err := http.NewRequest(method, fullURL, bytes.NewBuffer(marshalled)) @@ -790,12 +805,12 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i "url": fullURL, "request_body": reqBody, }, "could not create %s request", method) - return errs.WithStack(err) + return nil, errs.WithStack(err) } token, err := oc.config.GetAPIToken() if err != nil { - return err + return nil, err } req.Header.Set("Content-Type", "application/json") req.Header.Set("Accept", "application/json") @@ -808,7 +823,7 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i "url": fullURL, "request_body": reqBody, }, "could not perform %s request", method) - return errs.WithStack(err) + return nil, errs.WithStack(err) } defer resp.Body.Close() @@ -820,12 +835,12 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i "url": fullURL, "request_body": reqBody, }, "could not read response from %s request", method) - return errs.WithStack(err) + return nil, errs.WithStack(err) } respBody := buf.Bytes() status := resp.StatusCode - if status != http.StatusOK { + if status < http.StatusOK || status > http.StatusPartialContent { log.Error(nil, map[string]interface{}{ "url": fullURL, "request_body": reqBody, @@ -836,11 +851,23 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i // If response contains a Kubernetes Status object, create a StatusError err = parseErrorFromStatus(respBody) if err != nil { - return convertError(errs.WithStack(err), "failed to %s url %s due to status code %d", method, fullURL, status) + return nil, convertError(errs.WithStack(err), "failed to %s url %s due to status code %d", method, fullURL, status) } - return errs.Errorf("failed to %s url %s: status code %d", method, fullURL, status) + return nil, errs.Errorf("failed to %s url %s: status code %d", method, fullURL, status) } - return nil + + 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) { @@ -1053,17 +1080,18 @@ func (kc *kubeClient) deleteDeploymentConfig(spaceName string, dcName string, na }, PropagationPolicy: &policy, } - err = kc.DeleteDeploymentConfig(namespace, dcName, opts) + // 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) error { +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) - // API states this should return a Status object, but it returns the DC instead, - // just check for no HTTP error return oc.sendResource(dcPath, "DELETE", opts) } @@ -2020,7 +2048,7 @@ func (kc *kubeClient) deleteRoutes(appLabel string, envNS string) error { // 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) + _, err := kc.DeleteRoute(envNS, name, opts) if err != nil { return err } @@ -2028,7 +2056,8 @@ func (kc *kubeClient) deleteRoutes(appLabel string, envNS string) error { return nil } -func (oc *openShiftAPIClient) DeleteRoute(namespace string, name string, opts *metaV1.DeleteOptions) error { +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 @@ -2079,7 +2108,7 @@ func (oc *openShiftAPIClient) getResource(path string, allowMissing bool) (map[s status := resp.StatusCode if status == http.StatusNotFound && allowMissing { return nil, nil - } else if status != http.StatusOK { + } else if status < http.StatusOK || status > http.StatusPartialContent { log.Error(nil, map[string]interface{}{ "url": fullURL, "response_body": buf, diff --git a/test/kubernetes/can-i.yaml b/test/kubernetes/can-i.yaml new file mode 100644 index 0000000000..a8e37bb7fa --- /dev/null +++ b/test/kubernetes/can-i.yaml @@ -0,0 +1,8479 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + headers: + Content-Type: + - application/json;charset=UTF-8 + status: 200 OK + code: 200 From bd04f7871f44a246c422ea136db523a5f069ef65 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Thu, 26 Jul 2018 16:55:08 -0400 Subject: [PATCH 05/36] Remove unused interactions in delete cassettes --- .../deletedeployment-badroutes.yaml | 646 ------------------ .../deletedeployment-badservices.yaml | 646 ------------------ .../deletedeployment-delete-dc-error.yaml | 646 ------------------ .../deletedeployment-delete-routes-error.yaml | 646 ------------------ .../deletedeployment-delete-svc-error.yaml | 646 ------------------ .../deletedeployment-get-dc-error.yaml | 646 ------------------ .../deletedeployment-get-routes-error.yaml | 646 ------------------ .../deletedeployment-get-svc-error.yaml | 646 ------------------ .../kubernetes/deletedeployment-nobuilds.yaml | 646 ------------------ test/kubernetes/deletedeployment-nodc.yaml | 646 ------------------ .../kubernetes/deletedeployment-noroutes.yaml | 646 ------------------ .../deletedeployment-noservices.yaml | 646 ------------------ .../deletedeployment-wrongspace.yaml | 646 ------------------ test/kubernetes/deletedeployment.yaml | 646 ------------------ 14 files changed, 9044 deletions(-) diff --git a/test/kubernetes/deletedeployment-badroutes.yaml b/test/kubernetes/deletedeployment-badroutes.yaml index 06f0f09729..84d3885d50 100644 --- a/test/kubernetes/deletedeployment-badroutes.yaml +++ b/test/kubernetes/deletedeployment-badroutes.yaml @@ -696,652 +696,6 @@ interactions: - application/json;charset=UTF-8 status: 418 I'm a teapot code: 418 - # 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: "" diff --git a/test/kubernetes/deletedeployment-badservices.yaml b/test/kubernetes/deletedeployment-badservices.yaml index 05c818fad2..94aa4602c6 100644 --- a/test/kubernetes/deletedeployment-badservices.yaml +++ b/test/kubernetes/deletedeployment-badservices.yaml @@ -696,652 +696,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-delete-dc-error.yaml b/test/kubernetes/deletedeployment-delete-dc-error.yaml index 570e14fb21..5b6c5559b3 100644 --- a/test/kubernetes/deletedeployment-delete-dc-error.yaml +++ b/test/kubernetes/deletedeployment-delete-dc-error.yaml @@ -546,652 +546,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-delete-routes-error.yaml b/test/kubernetes/deletedeployment-delete-routes-error.yaml index 6546aa387c..3da7e75a36 100644 --- a/test/kubernetes/deletedeployment-delete-routes-error.yaml +++ b/test/kubernetes/deletedeployment-delete-routes-error.yaml @@ -691,652 +691,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-delete-svc-error.yaml b/test/kubernetes/deletedeployment-delete-svc-error.yaml index 96dc76ec6f..079a3c436e 100644 --- a/test/kubernetes/deletedeployment-delete-svc-error.yaml +++ b/test/kubernetes/deletedeployment-delete-svc-error.yaml @@ -741,652 +741,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-get-dc-error.yaml b/test/kubernetes/deletedeployment-get-dc-error.yaml index e64d003aea..cfdfc2cec5 100644 --- a/test/kubernetes/deletedeployment-get-dc-error.yaml +++ b/test/kubernetes/deletedeployment-get-dc-error.yaml @@ -546,652 +546,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-get-routes-error.yaml b/test/kubernetes/deletedeployment-get-routes-error.yaml index c4b66c6ca6..d1f6bed3b9 100644 --- a/test/kubernetes/deletedeployment-get-routes-error.yaml +++ b/test/kubernetes/deletedeployment-get-routes-error.yaml @@ -691,652 +691,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-get-svc-error.yaml b/test/kubernetes/deletedeployment-get-svc-error.yaml index 1054bc31af..feaeb28e93 100644 --- a/test/kubernetes/deletedeployment-get-svc-error.yaml +++ b/test/kubernetes/deletedeployment-get-svc-error.yaml @@ -741,652 +741,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-nobuilds.yaml b/test/kubernetes/deletedeployment-nobuilds.yaml index 637a0f1884..1b70cb45f4 100644 --- a/test/kubernetes/deletedeployment-nobuilds.yaml +++ b/test/kubernetes/deletedeployment-nobuilds.yaml @@ -613,652 +613,6 @@ interactions: - 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": "myApp-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myApp", - "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\":\"myApp\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myApp\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myApp\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"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\"}},\"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\":[\"myApp\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myApp:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myApp\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myApp\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"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\"}},\"spec\":{\"containers\":[{\"name\":\"myApp\",\"image\":\"127.0.0.1:5000/my-run/myApp@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": "myApp", - "group": "myGroup", - "openshift.io/deployment-config.name": "myApp", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myApp-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myApp", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myApp-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myApp", - "deployment": "myApp-1", - "deploymentconfig": "myApp", - "group": "myGroup", - "provider": "fabric8" - }, - "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", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myApp", - "openshift.io/deployment.name": "myApp-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myApp", - "deployment": "myApp-1", - "deploymentconfig": "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 - } - } - }, - "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/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", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myApp-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myApp; cpu limit for container myApp", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myApp", - "openshift.io/deployment.name": "myApp-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myApp-1-", - "labels": { - "app": "myApp", - "deployment": "myApp-1", - "deploymentconfig": "myApp", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myApp-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myApp-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myApp-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/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "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": { - "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/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myApp", - "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/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", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myApp-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myApp; cpu limit for container myApp", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myApp", - "openshift.io/deployment.name": "myApp-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myApp-1-", - "labels": { - "app": "myApp", - "deployment": "myApp-1", - "deploymentconfig": "myApp", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myApp-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myApp-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myApp-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/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "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": { - "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/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myApp", - "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: "" diff --git a/test/kubernetes/deletedeployment-nodc.yaml b/test/kubernetes/deletedeployment-nodc.yaml index 515950ce3a..42d664d199 100644 --- a/test/kubernetes/deletedeployment-nodc.yaml +++ b/test/kubernetes/deletedeployment-nodc.yaml @@ -492,652 +492,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-noroutes.yaml b/test/kubernetes/deletedeployment-noroutes.yaml index 46d4c5f484..eae8d83efc 100644 --- a/test/kubernetes/deletedeployment-noroutes.yaml +++ b/test/kubernetes/deletedeployment-noroutes.yaml @@ -571,652 +571,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-noservices.yaml b/test/kubernetes/deletedeployment-noservices.yaml index 0a8f64d4bc..526e7197cd 100644 --- a/test/kubernetes/deletedeployment-noservices.yaml +++ b/test/kubernetes/deletedeployment-noservices.yaml @@ -696,652 +696,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-wrongspace.yaml b/test/kubernetes/deletedeployment-wrongspace.yaml index 12ade05e30..df4df9274e 100644 --- a/test/kubernetes/deletedeployment-wrongspace.yaml +++ b/test/kubernetes/deletedeployment-wrongspace.yaml @@ -696,652 +696,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment.yaml b/test/kubernetes/deletedeployment.yaml index a02f44aae5..3fe9c042cf 100644 --- a/test/kubernetes/deletedeployment.yaml +++ b/test/kubernetes/deletedeployment.yaml @@ -696,652 +696,6 @@ interactions: - 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: "" From a7686788c1ae7c4dd1ffbc303f584266bf3fc851 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Fri, 27 Jul 2018 16:42:33 -0400 Subject: [PATCH 06/36] Add CanDeploy to filter deployable environments, maintain full list in kubeClient --- controller/deployments_urlprovider.go | 15 ++++------- kubernetes/deployments_kubeclient.go | 25 +++++++++++-------- .../deployments_kubeclient_blackbox_test.go | 9 +++++++ .../deployments_kubeclient_whitebox_test.go | 4 +++ 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/controller/deployments_urlprovider.go b/controller/deployments_urlprovider.go index fded9e35ef..42dab66c6d 100644 --- a/controller/deployments_urlprovider.go +++ b/controller/deployments_urlprovider.go @@ -199,23 +199,18 @@ func (up *tenantURLProvider) GetEnvironmentMapping() map[string]string { log.Error(nil, map[string]interface{}{ "namespace": envNS, }, "namespace has no type") - } else if !isInternalNamespace(*envName) { - result[*envName] = envNS } } return result } // Types of namespaces where the user does not deploy applications -var internalNamespaceTypes = []string{"user", "che", "jenkins"} +var internalNamespaceTypes = map[string]struct{}{"user": {}, "che": {}, "jenkins": {}} -func isInternalNamespace(envType string) bool { - for _, internalType := range internalNamespaceTypes { - if envType == internalType { - return true - } - } - return false +// CanDeploy returns true if the environment type provided can be deployed to as part of a pipeline +func CanDeploy(envType string) bool { + _, pres := internalNamespaceTypes[envType] + return !pres } func (up *tenantURLProvider) GetAPIToken() (*string, error) { diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go index da6ae95fb5..2e26f54034 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -146,6 +146,7 @@ type route struct { // 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) @@ -327,11 +328,13 @@ func (kc *kubeClient) GetApplication(spaceName string, appName string) (*app.Sim // Get all deployments of this app for each environment in this space deployments := []*app.SimpleDeployment{} for envName := range kc.envMap { - deployment, err := kc.GetDeployment(spaceName, appName, envName) - if err != nil { - return nil, err - } else if deployment != nil { - deployments = append(deployments, deployment) + 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) + } } } @@ -677,11 +680,13 @@ func (kc *kubeClient) DeleteDeployment(spaceName string, appName string, envName func (kc *kubeClient) GetEnvironments() ([]*app.SimpleEnvironment, error) { envs := []*app.SimpleEnvironment{} for envName := range kc.envMap { - env, err := kc.GetEnvironment(envName) - if err != nil { - return nil, err + if kc.CanDeploy(envName) { + env, err := kc.GetEnvironment(envName) + if err != nil { + return nil, err + } + envs = append(envs, env) } - envs = append(envs, env) } return envs, nil } @@ -774,7 +779,7 @@ func (oc *openShiftAPIClient) GetBuildConfigs(namespace string, labelSelector st func (kc *kubeClient) getEnvironmentNamespace(envName string) (string, error) { envNS, pres := kc.envMap[envName] - if !pres { + if !pres || !kc.CanDeploy(envName) { return "", errs.Errorf("unknown environment: %s", envName) } return envNS, nil diff --git a/kubernetes/deployments_kubeclient_blackbox_test.go b/kubernetes/deployments_kubeclient_blackbox_test.go index bb324b149e..cbc6909f39 100644 --- a/kubernetes/deployments_kubeclient_blackbox_test.go +++ b/kubernetes/deployments_kubeclient_blackbox_test.go @@ -1616,6 +1616,15 @@ func modifyURL(apiURLStr string, prefix string, path string) (*url.URL, error) { 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 diff --git a/kubernetes/deployments_kubeclient_whitebox_test.go b/kubernetes/deployments_kubeclient_whitebox_test.go index f2802ddcb3..f479430e71 100644 --- a/kubernetes/deployments_kubeclient_whitebox_test.go +++ b/kubernetes/deployments_kubeclient_whitebox_test.go @@ -306,3 +306,7 @@ func (up *testURLProvider) GetEnvironmentMapping() map[string]string { "stage": "my-stage", } } + +func (up *testURLProvider) CanDeploy(envType string) bool { + return true +} From 5136927a09d3381cae2978ba7b90ae1267c13e4d Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Fri, 27 Jul 2018 17:25:00 -0400 Subject: [PATCH 07/36] Implement authz check for DeleteDeployment --- kubernetes/deployments_access.go | 59 +++++++++++++++---- .../deployments_access_blackbox_test.go | 41 +++++++++++++ kubernetes/deployments_kubeclient.go | 20 +++---- .../deployments_kubeclient_blackbox_test.go | 1 + 4 files changed, 101 insertions(+), 20 deletions(-) diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go index 7d5c13a48c..7371f0dfa0 100644 --- a/kubernetes/deployments_access.go +++ b/kubernetes/deployments_access.go @@ -26,7 +26,7 @@ type KubeAccessControl interface { //CanScaleDeployment(envName string) (bool, error) FIXME How will this work? Need deployment name? //CanGetDeploymentStats(envName string) (bool, error) //CanGetDeploymentStatSeries(envName string) (bool, error) - //CanDeleteDeployment(envName string) (bool, error) + CanDeleteDeployment(envName string) (bool, error) CanGetEnvironments() (bool, error) CanGetEnvironment(envName string) (bool, error) } @@ -68,17 +68,57 @@ func (rulesMap accessRules) isAuthorized(reqs []*requestedAccess) bool { return true } +var deleteDeploymentRules = []*requestedAccess{ + {qualifiedResource{"", "services"}, []string{verbList, verbDelete}}, + {qualifiedResource{"", "routes"}, []string{verbList, verbDelete}}, + {qualifiedResource{"", "deploymentconfigs"}, []string{verbGet, verbDelete}}, +} + +func (kc *kubeClient) CanDeleteDeployment(envName string) (bool, error) { + // Also need access to builds in user namespace + ok, err := kc.canGetBuilds() + if err != nil { + return false, err + } else if !ok { + return false, nil + } + + rules, err := kc.getRulesForEnvironment(envName) + if err != nil { + return false, err + } + + return rules.isAuthorized(deleteDeploymentRules), nil +} + +const environmentTypeUser = "user" + +var getBuildsRules = []*requestedAccess{ + {qualifiedResource{"", "builds"}, []string{verbList}}, +} + +func (kc *kubeClient) canGetBuilds() (bool, error) { + rules, err := kc.getRulesForEnvironment(environmentTypeUser) + if err != nil { + return false, err + } + + return rules.isAuthorized(getBuildsRules), nil +} + var getEnvironmentRules = []*requestedAccess{ - {qualifiedResource{"", "resourcequotas"}, []string{verbList, verbGet}}, + {qualifiedResource{"", "resourcequotas"}, []string{verbList}}, } func (kc *kubeClient) CanGetEnvironments() (bool, error) { for envName := range kc.envMap { - ok, err := kc.CanGetEnvironment(envName) - if err != nil { - return false, err - } else if !ok { - return false, nil + if kc.CanDeploy(envName) { + ok, err := kc.CanGetEnvironment(envName) + if err != nil { + return false, err + } else if !ok { + return false, nil + } } } return true, nil @@ -90,8 +130,7 @@ func (kc *kubeClient) CanGetEnvironment(envName string) (bool, error) { return false, err } - ok := rules.isAuthorized(getEnvironmentRules) - return ok, nil + return rules.isAuthorized(getEnvironmentRules), nil } // Gets the authorization rules for the current user in a given environment @@ -103,7 +142,7 @@ func (kc *kubeClient) getRulesForEnvironment(envName string) (*accessRules, erro } // Lookup authorization rules for this environment - envNS, err := kc.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, true) if err != nil { return nil, err } diff --git a/kubernetes/deployments_access_blackbox_test.go b/kubernetes/deployments_access_blackbox_test.go index 356b9d907e..0f32367a21 100644 --- a/kubernetes/deployments_access_blackbox_test.go +++ b/kubernetes/deployments_access_blackbox_test.go @@ -7,6 +7,47 @@ import ( "github.com/stretchr/testify/require" ) +func TestCanDeleteDeployment(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + envName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + envName: "run", + cassetteName: "can-i", + expectedResult: 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} + func TestCanGetEnvironments(t *testing.T) { testCases := []struct { testName string diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go index 2e26f54034..9b0725acc2 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -199,7 +199,7 @@ func NewKubeClient(config *KubeClientConfig) (KubeClientInterface, error) { MetricsGetter: config.MetricsGetter, } - rules, err := kubeClient.lookupAllRules(config.UserNamespace) // XXX + /*rules, err := kubeClient.lookupAllRules(config.UserNamespace) // XXX if err != nil { return nil, err } @@ -208,7 +208,7 @@ func NewKubeClient(config *KubeClientConfig) (KubeClientInterface, error) { if err != nil { return nil, err } - fmt.Printf("CanGetEnvironment %v\n", canGetEnv) + fmt.Printf("CanGetEnvironment %v\n", canGetEnv)*/ return kubeClient, nil } @@ -352,7 +352,7 @@ func (kc *kubeClient) GetApplication(spaceName string, appName string) (*app.Sim // 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.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, false) if err != nil { return nil, err } @@ -436,7 +436,7 @@ func (kc *kubeClient) getApplicationURL(envNS string, deploy *deployment) (*stri // 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.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, false) if err != nil { return nil, err } @@ -508,7 +508,7 @@ func (kc *kubeClient) GetDeployment(spaceName string, appName string, envName st // 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.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, false) if err != nil { return nil, err } @@ -567,7 +567,7 @@ func (kc *kubeClient) GetDeploymentStats(spaceName string, appName string, envNa // 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.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, false) if err != nil { return nil, err } @@ -624,7 +624,7 @@ func (kc *kubeClient) GetDeploymentStatSeries(spaceName string, appName string, } func (kc *kubeClient) DeleteDeployment(spaceName string, appName string, envName string) error { - envNS, err := kc.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, false) if err != nil { return err } @@ -693,7 +693,7 @@ func (kc *kubeClient) GetEnvironments() ([]*app.SimpleEnvironment, error) { // GetEnvironment returns information on an environment with the provided name func (kc *kubeClient) GetEnvironment(envName string) (*app.SimpleEnvironment, error) { - envNS, err := kc.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, false) if err != nil { return nil, err } @@ -777,9 +777,9 @@ func (oc *openShiftAPIClient) GetBuildConfigs(namespace string, labelSelector st return oc.getResource(bcURL, false) } -func (kc *kubeClient) getEnvironmentNamespace(envName string) (string, error) { +func (kc *kubeClient) getEnvironmentNamespace(envName string, includeInternal bool) (string, error) { envNS, pres := kc.envMap[envName] - if !pres || !kc.CanDeploy(envName) { + if !pres || !kc.CanDeploy(envName) && !includeInternal { return "", errs.Errorf("unknown environment: %s", envName) } return envNS, nil diff --git a/kubernetes/deployments_kubeclient_blackbox_test.go b/kubernetes/deployments_kubeclient_blackbox_test.go index cbc6909f39..fc170687a2 100644 --- a/kubernetes/deployments_kubeclient_blackbox_test.go +++ b/kubernetes/deployments_kubeclient_blackbox_test.go @@ -1588,6 +1588,7 @@ func (up *testURLProvider) GetMetricsURL(envNS string) (*string, error) { func (up *testURLProvider) GetEnvironmentMapping() map[string]string { return map[string]string{ + "user": "myNamespace", "test": "myNamespace", "run": "my-run", "stage": "my-stage", From 9fd101e640bb72517d822e7ab60daa0791df8412 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Tue, 31 Jul 2018 18:29:01 -0400 Subject: [PATCH 08/36] Implement remaining methods, add tests for access control failure on builds --- kubernetes/deployments_access.go | 128 +- .../deployments_access_blackbox_test.go | 282 + test/kubernetes/can-i-no-builds.yaml | 8478 +++++++++++++++++ 3 files changed, 8865 insertions(+), 23 deletions(-) create mode 100644 test/kubernetes/can-i-no-builds.yaml diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go index 7371f0dfa0..7a470cf010 100644 --- a/kubernetes/deployments_access.go +++ b/kubernetes/deployments_access.go @@ -19,13 +19,15 @@ const ( 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() (bool, error) - //CanScaleDeployment(envName string) (bool, error) FIXME How will this work? Need deployment name? - //CanGetDeploymentStats(envName string) (bool, error) - //CanGetDeploymentStatSeries(envName string) (bool, error) + 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) @@ -68,42 +70,127 @@ func (rulesMap accessRules) isAuthorized(reqs []*requestedAccess) bool { return true } +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 +} + +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}}, +} + +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}}, +} + +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}}, } +// TODO Do we want resource name-specific checks. Can delete DC named X? 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}}, +} + +func (kc *kubeClient) CanGetDeploymentStats(envName string) (bool, error) { + return kc.checkAuthorizedWithBuilds(envName, getDeploymentStatsRules) +} + +func (kc *kubeClient) CanGetDeploymentStatSeries(envName string) (bool, error) { + return kc.checkAuthorizedWithBuilds(envName, getDeploymentStatsRules) +} + +func (kc *kubeClient) checkAuthorizedWithBuilds(envName string, reqs []*requestedAccess) (bool, error) { // Also need access to builds in user namespace - ok, err := kc.canGetBuilds() + ok, err := kc.checkAuthorizedInEnv(getBuildsRules, environmentTypeUser) if err != nil { return false, err } else if !ok { return false, nil } - rules, err := kc.getRulesForEnvironment(envName) - if err != nil { - return false, err - } - - return rules.isAuthorized(deleteDeploymentRules), 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) canGetBuilds() (bool, error) { - rules, err := kc.getRulesForEnvironment(environmentTypeUser) +func (kc *kubeClient) checkAuthorizedInEnv(reqs []*requestedAccess, envName string) (bool, error) { + rules, err := kc.getRulesForEnvironment(envName) if err != nil { return false, err } - return rules.isAuthorized(getBuildsRules), nil + return rules.isAuthorized(reqs), nil } var getEnvironmentRules = []*requestedAccess{ @@ -125,12 +212,7 @@ func (kc *kubeClient) CanGetEnvironments() (bool, error) { } func (kc *kubeClient) CanGetEnvironment(envName string) (bool, error) { - rules, err := kc.getRulesForEnvironment(envName) - if err != nil { - return false, err - } - - return rules.isAuthorized(getEnvironmentRules), nil + return kc.checkAuthorizedInEnv(getEnvironmentRules, envName) } // Gets the authorization rules for the current user in a given environment @@ -238,7 +320,7 @@ func getStringSliceFromJSON(jsonObj map[string]interface{}, name string) []strin var items []string jsonArray, ok := jsonObj[name].([]interface{}) if ok { - items = make([]string, len(jsonArray)) + items = make([]string, 0, len(jsonArray)) for _, jsonItem := range jsonArray { item, ok := jsonItem.(string) if !ok { diff --git a/kubernetes/deployments_access_blackbox_test.go b/kubernetes/deployments_access_blackbox_test.go index 0f32367a21..91b52109c9 100644 --- a/kubernetes/deployments_access_blackbox_test.go +++ b/kubernetes/deployments_access_blackbox_test.go @@ -7,6 +7,188 @@ import ( "github.com/stretchr/testify/require" ) +func TestCanGetSpace(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + cassetteName: "can-i", + expectedResult: true, + }, + { + testName: "No Builds", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, + } + + 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} + +func TestCanGetApplication(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + cassetteName: "can-i", + expectedResult: true, + }, + { + testName: "No Builds", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, + } + + 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} + +func TestCanGetDeployment(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + envName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + envName: "run", + cassetteName: "can-i", + expectedResult: true, + }, + { + testName: "No Builds", + envName: "run", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, + } + + 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} + +func TestCanScaleDeployment(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + envName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + envName: "run", + cassetteName: "can-i", + expectedResult: true, + }, + { + testName: "No Builds", + envName: "run", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, + } + + 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} + func TestCanDeleteDeployment(t *testing.T) { testCases := []struct { testName string @@ -22,6 +204,12 @@ func TestCanDeleteDeployment(t *testing.T) { cassetteName: "can-i", expectedResult: true, }, + { + testName: "No Builds", + envName: "run", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, } for _, testCase := range testCases { @@ -86,3 +274,97 @@ func TestCanGetEnvironments(t *testing.T) { }) } } + +func TestCanGetDeploymentStats(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + envName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + envName: "run", + cassetteName: "can-i", + expectedResult: true, + }, + { + testName: "No Builds", + envName: "run", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, + } + + 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} + +func TestCanGetDeploymentStatSeries(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + envName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + envName: "run", + cassetteName: "can-i", + expectedResult: true, + }, + { + testName: "No Builds", + envName: "run", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, + } + + 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} diff --git a/test/kubernetes/can-i-no-builds.yaml b/test/kubernetes/can-i-no-builds.yaml new file mode 100644 index 0000000000..18067b78dc --- /dev/null +++ b/test/kubernetes/can-i-no-builds.yaml @@ -0,0 +1,8478 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + headers: + Content-Type: + - application/json;charset=UTF-8 + status: 200 OK + code: 200 From 2c42ebcd04d9eb2ac3c2766f7cdad37db65d482d Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Wed, 1 Aug 2018 15:39:08 -0400 Subject: [PATCH 09/36] Fix URLProvider changes, add tests for CanDeploy --- controller/deployments_urlprovider.go | 4 ++- controller/deployments_urlprovider_test.go | 40 +++++++++++++++++++--- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/controller/deployments_urlprovider.go b/controller/deployments_urlprovider.go index 42dab66c6d..cba02b6cf0 100644 --- a/controller/deployments_urlprovider.go +++ b/controller/deployments_urlprovider.go @@ -199,6 +199,8 @@ func (up *tenantURLProvider) GetEnvironmentMapping() map[string]string { log.Error(nil, map[string]interface{}{ "namespace": envNS, }, "namespace has no type") + } else { + result[*envName] = envNS } } return result @@ -208,7 +210,7 @@ func (up *tenantURLProvider) GetEnvironmentMapping() map[string]string { 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 CanDeploy(envType string) bool { +func (up *tenantURLProvider) CanDeploy(envType string) bool { _, pres := internalNamespaceTypes[envType] return !pres } diff --git a/controller/deployments_urlprovider_test.go b/controller/deployments_urlprovider_test.go index cd20045fa8..99cd0c11c2 100644 --- a/controller/deployments_urlprovider_test.go +++ b/controller/deployments_urlprovider_test.go @@ -225,22 +225,31 @@ func TestTenantGetEnvironmentMapping(t *testing.T) { testName: "Basic", inputFile: "user-services.json", expectedMap: map[string]string{ - "run": "theuser-run", - "stage": "theuser-stage", + "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{ - "run": "theuser-run", + "user": "theuser", + "run": "theuser-run", + "che": "theuser-che", + "jenkins": "theuser-jenkins", }, }, { testName: "Empty Type", inputFile: "user-services-empty-type.json", expectedMap: map[string]string{ - "run": "theuser-run", + "user": "theuser", + "run": "theuser-run", + "che": "theuser-che", + "jenkins": "theuser-jenkins", }, }, } @@ -259,6 +268,29 @@ func TestTenantGetEnvironmentMapping(t *testing.T) { } } +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 { From e571140b2475189179d845c3bcd3b88b71d6e220 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Wed, 1 Aug 2018 18:23:48 -0400 Subject: [PATCH 10/36] Better test error conditions --- kubernetes/deployments_access.go | 19 +- .../deployments_access_blackbox_test.go | 150 +- test/kubernetes/can-i-bad-resource.yaml | 8480 +++++++++++++++++ test/kubernetes/can-i-bad-rule.yaml | 8480 +++++++++++++++++ test/kubernetes/can-i-bad-verbs.yaml | 8480 +++++++++++++++++ test/kubernetes/can-i-empty-group.yaml | 8477 ++++++++++++++++ test/kubernetes/can-i-no-dc.yaml | 8478 ++++++++++++++++ test/kubernetes/can-i-no-quotas.yaml | 8478 ++++++++++++++++ test/kubernetes/can-i-no-rules.yaml | 85 + test/kubernetes/can-i-no-status.yaml | 82 + 10 files changed, 51161 insertions(+), 48 deletions(-) create mode 100644 test/kubernetes/can-i-bad-resource.yaml create mode 100644 test/kubernetes/can-i-bad-rule.yaml create mode 100644 test/kubernetes/can-i-bad-verbs.yaml create mode 100644 test/kubernetes/can-i-empty-group.yaml create mode 100644 test/kubernetes/can-i-no-dc.yaml create mode 100644 test/kubernetes/can-i-no-quotas.yaml create mode 100644 test/kubernetes/can-i-no-rules.yaml create mode 100644 test/kubernetes/can-i-no-status.yaml diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go index 7a470cf010..b26b091f21 100644 --- a/kubernetes/deployments_access.go +++ b/kubernetes/deployments_access.go @@ -249,11 +249,10 @@ func (kc *kubeClient) lookupAllRules(namespace string) (*accessRules, error) { return nil, err } - // TODO Parse using info from https://github.com/openshift/api/blob/master/authorization/v1/types.go + // Parse rules and store by resource type status, ok := reviewResult["status"].(map[string]interface{}) if !ok { log.Error(nil, map[string]interface{}{ - "err": err, "namespace": namespace, "response": reviewResult, }, "status missing from SelfSubjectRulesReview") @@ -262,9 +261,8 @@ func (kc *kubeClient) lookupAllRules(namespace string) (*accessRules, error) { rules, ok := status["rules"].([]interface{}) if !ok { log.Error(nil, map[string]interface{}{ - "err": err, "namespace": namespace, - "response": reviewResult, + "status": status, }, "rules missing from SelfSubjectRulesReview") return nil, errs.Errorf("rules missing from SelfSubjectRulesReview returned from %s", namespace) } @@ -274,10 +272,9 @@ func (kc *kubeClient) lookupAllRules(namespace string) (*accessRules, error) { rule, ok := rawRule.(map[string]interface{}) if !ok { log.Error(nil, map[string]interface{}{ - "err": err, "namespace": namespace, - "response": reviewResult, - }, "rules missing from SelfSubjectRulesReview") + "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) } @@ -303,7 +300,13 @@ func processRule(rules accessRules, rule map[string]interface{}) { // Add verbs for each group/resource in rule for _, resource := range resources { - // If no groups are specified, the rule is for the default k8s/OpenShift API group + /* + * 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 diff --git a/kubernetes/deployments_access_blackbox_test.go b/kubernetes/deployments_access_blackbox_test.go index 91b52109c9..36b9946180 100644 --- a/kubernetes/deployments_access_blackbox_test.go +++ b/kubernetes/deployments_access_blackbox_test.go @@ -13,7 +13,6 @@ func TestCanGetSpace(t *testing.T) { cassetteName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -25,6 +24,16 @@ func TestCanGetSpace(t *testing.T) { 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 { @@ -39,10 +48,6 @@ func TestCanGetSpace(t *testing.T) { result, err := kc.CanGetSpace() 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, testCase.expectedResult, result, "Expected different authorization result") @@ -57,7 +62,6 @@ func TestCanGetApplication(t *testing.T) { cassetteName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -69,6 +73,16 @@ func TestCanGetApplication(t *testing.T) { 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 { @@ -83,10 +97,6 @@ func TestCanGetApplication(t *testing.T) { result, err := kc.CanGetApplication() 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, testCase.expectedResult, result, "Expected different authorization result") @@ -102,7 +112,6 @@ func TestCanGetDeployment(t *testing.T) { envName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -116,6 +125,18 @@ func TestCanGetDeployment(t *testing.T) { 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 { @@ -130,10 +151,6 @@ func TestCanGetDeployment(t *testing.T) { result, err := kc.CanGetDeployment(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.Equal(t, testCase.expectedResult, result, "Expected different authorization result") @@ -149,7 +166,6 @@ func TestCanScaleDeployment(t *testing.T) { envName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -163,6 +179,18 @@ func TestCanScaleDeployment(t *testing.T) { 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 { @@ -177,10 +205,6 @@ func TestCanScaleDeployment(t *testing.T) { result, err := kc.CanScaleDeployment(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.Equal(t, testCase.expectedResult, result, "Expected different authorization result") @@ -196,7 +220,6 @@ func TestCanDeleteDeployment(t *testing.T) { envName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -210,6 +233,18 @@ func TestCanDeleteDeployment(t *testing.T) { 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 { @@ -224,10 +259,6 @@ func TestCanDeleteDeployment(t *testing.T) { result, err := kc.CanDeleteDeployment(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.Equal(t, testCase.expectedResult, result, "Expected different authorization result") @@ -242,13 +273,42 @@ func TestCanGetEnvironments(t *testing.T) { cassetteName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { 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 { @@ -263,10 +323,6 @@ func TestCanGetEnvironments(t *testing.T) { result, err := kc.CanGetEnvironments() 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, testCase.expectedResult, result, "Expected different authorization result") @@ -282,7 +338,6 @@ func TestCanGetDeploymentStats(t *testing.T) { envName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -296,6 +351,18 @@ func TestCanGetDeploymentStats(t *testing.T) { 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 { @@ -310,10 +377,6 @@ func TestCanGetDeploymentStats(t *testing.T) { result, err := kc.CanGetDeploymentStats(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.Equal(t, testCase.expectedResult, result, "Expected different authorization result") @@ -329,7 +392,6 @@ func TestCanGetDeploymentStatSeries(t *testing.T) { envName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -343,6 +405,18 @@ func TestCanGetDeploymentStatSeries(t *testing.T) { 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 { @@ -357,10 +431,6 @@ func TestCanGetDeploymentStatSeries(t *testing.T) { result, err := kc.CanGetDeploymentStatSeries(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.Equal(t, testCase.expectedResult, result, "Expected different authorization result") diff --git a/test/kubernetes/can-i-bad-resource.yaml b/test/kubernetes/can-i-bad-resource.yaml new file mode 100644 index 0000000000..295c05748e --- /dev/null +++ b/test/kubernetes/can-i-bad-resource.yaml @@ -0,0 +1,8480 @@ +--- +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": [ + "appliedclusterresourcequotas", + ["bad", "resource"] + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..f6044d310f --- /dev/null +++ b/test/kubernetes/can-i-bad-rule.yaml @@ -0,0 +1,8480 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + [ "bad", "rule" ], + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..6e1251f91d --- /dev/null +++ b/test/kubernetes/can-i-bad-verbs.yaml @@ -0,0 +1,8480 @@ +--- +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", + ["bad", "verbs"], + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..a07b55fcde --- /dev/null +++ b/test/kubernetes/can-i-empty-group.yaml @@ -0,0 +1,8477 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..7d742e428a --- /dev/null +++ b/test/kubernetes/can-i-no-dc.yaml @@ -0,0 +1,8478 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..a9f5dca939 --- /dev/null +++ b/test/kubernetes/can-i-no-quotas.yaml @@ -0,0 +1,8478 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..5cf9b496e5 --- /dev/null +++ b/test/kubernetes/can-i-no-rules.yaml @@ -0,0 +1,85 @@ +--- +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 new file mode 100644 index 0000000000..c7ad70714c --- /dev/null +++ b/test/kubernetes/can-i-no-status.yaml @@ -0,0 +1,82 @@ +--- +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 From efe93cdd88b1c06ad1b159f06e1c26640cf267e9 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Thu, 2 Aug 2018 17:55:33 -0400 Subject: [PATCH 11/36] Clean up code --- kubernetes/deployments_access.go | 1 - kubernetes/deployments_kubeclient.go | 10 ---------- 2 files changed, 11 deletions(-) diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go index b26b091f21..ac5a3837db 100644 --- a/kubernetes/deployments_access.go +++ b/kubernetes/deployments_access.go @@ -142,7 +142,6 @@ var deleteDeploymentRules = []*requestedAccess{ {qualifiedResource{"", "deploymentconfigs"}, []string{verbGet, verbDelete}}, } -// TODO Do we want resource name-specific checks. Can delete DC named X? func (kc *kubeClient) CanDeleteDeployment(envName string) (bool, error) { return kc.checkAuthorizedWithBuilds(envName, deleteDeploymentRules) } diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go index 9b0725acc2..2c5b58f838 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -199,16 +199,6 @@ func NewKubeClient(config *KubeClientConfig) (KubeClientInterface, error) { MetricsGetter: config.MetricsGetter, } - /*rules, err := kubeClient.lookupAllRules(config.UserNamespace) // XXX - if err != nil { - return nil, err - } - fmt.Printf("%v\n", rules) // XXX - canGetEnv, err := kubeClient.CanGetEnvironment("run") - if err != nil { - return nil, err - } - fmt.Printf("CanGetEnvironment %v\n", canGetEnv)*/ return kubeClient, nil } From 0d756c5433343e3e7855641365bf005523083010 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Thu, 2 Aug 2018 18:19:04 -0400 Subject: [PATCH 12/36] Add more internal environments to kubeclient tests --- kubernetes/deployments_kubeclient_blackbox_test.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/kubernetes/deployments_kubeclient_blackbox_test.go b/kubernetes/deployments_kubeclient_blackbox_test.go index fc170687a2..73dd42f144 100644 --- a/kubernetes/deployments_kubeclient_blackbox_test.go +++ b/kubernetes/deployments_kubeclient_blackbox_test.go @@ -1588,10 +1588,12 @@ func (up *testURLProvider) GetMetricsURL(envNS string) (*string, error) { func (up *testURLProvider) GetEnvironmentMapping() map[string]string { return map[string]string{ - "user": "myNamespace", - "test": "myNamespace", - "run": "my-run", - "stage": "my-stage", + "user": "myNamespace", + "test": "myNamespace", + "run": "my-run", + "stage": "my-stage", + "che": "my-che", + "jenkins": "my-jenkins", } } From d3325c01f4cdd95955f50e27ef8f7a418c653d08 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Thu, 16 Aug 2018 17:19:20 -0400 Subject: [PATCH 13/36] Improve documentation, avoid boolean parameter for getting namespace --- kubernetes/deployments_access.go | 13 ++++++++++-- kubernetes/deployments_kubeclient.go | 30 ++++++++++++++++++++-------- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go index ac5a3837db..faab2bc384 100644 --- a/kubernetes/deployments_access.go +++ b/kubernetes/deployments_access.go @@ -70,6 +70,7 @@ func (rulesMap accessRules) isAuthorized(reqs []*requestedAccess) bool { return true } +// 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) @@ -92,6 +93,7 @@ func (kc *kubeClient) CanGetSpace() (bool, error) { 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) @@ -122,6 +124,7 @@ var getDeploymentRules = []*requestedAccess{ {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) } @@ -132,6 +135,7 @@ var scaleDeploymentRules = []*requestedAccess{ {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) } @@ -142,6 +146,7 @@ var deleteDeploymentRules = []*requestedAccess{ {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) } @@ -152,16 +157,18 @@ var getDeploymentStatsRules = []*requestedAccess{ {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) { - // Also need access to builds in user namespace + // Builds are located in user namespace ok, err := kc.checkAuthorizedInEnv(getBuildsRules, environmentTypeUser) if err != nil { return false, err @@ -196,6 +203,7 @@ 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) { @@ -210,6 +218,7 @@ func (kc *kubeClient) CanGetEnvironments() (bool, error) { 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) } @@ -223,7 +232,7 @@ func (kc *kubeClient) getRulesForEnvironment(envName string) (*accessRules, erro } // Lookup authorization rules for this environment - envNS, err := kc.getEnvironmentNamespace(envName, true) + envNS, err := kc.getEnvironmentNamespace(envName) if err != nil { return nil, err } diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go index 2c5b58f838..682b871fe9 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -318,6 +318,7 @@ func (kc *kubeClient) GetApplication(spaceName string, appName string) (*app.Sim // 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 { @@ -342,7 +343,7 @@ func (kc *kubeClient) GetApplication(spaceName string, appName string) (*app.Sim // 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.getEnvironmentNamespace(envName, false) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -426,7 +427,7 @@ func (kc *kubeClient) getApplicationURL(envNS string, deploy *deployment) (*stri // 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.getEnvironmentNamespace(envName, false) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -498,7 +499,7 @@ func (kc *kubeClient) GetDeployment(spaceName string, appName string, envName st // 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.getEnvironmentNamespace(envName, false) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -557,7 +558,7 @@ func (kc *kubeClient) GetDeploymentStats(spaceName string, appName string, envNa // 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.getEnvironmentNamespace(envName, false) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -614,7 +615,7 @@ func (kc *kubeClient) GetDeploymentStatSeries(spaceName string, appName string, } func (kc *kubeClient) DeleteDeployment(spaceName string, appName string, envName string) error { - envNS, err := kc.getEnvironmentNamespace(envName, false) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return err } @@ -670,6 +671,7 @@ func (kc *kubeClient) DeleteDeployment(spaceName string, appName string, envName 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 { @@ -683,7 +685,7 @@ func (kc *kubeClient) GetEnvironments() ([]*app.SimpleEnvironment, error) { // GetEnvironment returns information on an environment with the provided name func (kc *kubeClient) GetEnvironment(envName string) (*app.SimpleEnvironment, error) { - envNS, err := kc.getEnvironmentNamespace(envName, false) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -767,9 +769,21 @@ func (oc *openShiftAPIClient) GetBuildConfigs(namespace string, labelSelector st return oc.getResource(bcURL, false) } -func (kc *kubeClient) getEnvironmentNamespace(envName string, includeInternal bool) (string, error) { +// 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) && !includeInternal { + 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 From 2ae089abe5997ddff3fae37f0e1e9c767f1e5c7e Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Mon, 20 Aug 2018 18:07:18 -0400 Subject: [PATCH 14/36] Also check for wildcard rules --- kubernetes/deployments_access.go | 68 +- .../deployments_access_blackbox_test.go | 18 + .../kubernetes/can-i-all-groups-resource.yaml | 8491 +++++++++++++++++ test/kubernetes/can-i-all-groups.yaml | 8491 +++++++++++++++++ test/kubernetes/can-i-all-resource.yaml | 8491 +++++++++++++++++ 5 files changed, 25533 insertions(+), 26 deletions(-) create mode 100644 test/kubernetes/can-i-all-groups-resource.yaml create mode 100644 test/kubernetes/can-i-all-groups.yaml create mode 100644 test/kubernetes/can-i-all-resource.yaml diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go index faab2bc384..96f695e473 100644 --- a/kubernetes/deployments_access.go +++ b/kubernetes/deployments_access.go @@ -35,7 +35,7 @@ type KubeAccessControl interface { // Actions on a resource type that are required by one of our API methods type requestedAccess struct { - resource qualifiedResource + resource *qualifiedResource verbs []string } @@ -51,18 +51,27 @@ type qualifiedResource struct { // 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 { - // Look up rules for resource type - rules, pres := rulesMap[req.resource] - if !pres { - return false - } + // 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 { - _, pres := rules[verb] - if !pres { + if !containsVerb(rulesMap, res, verb) && + !containsVerb(rulesMap, allResAllGroup, verb) && + !containsVerb(rulesMap, allRes, verb) && + !containsVerb(rulesMap, allGroup, verb) { return false } } @@ -70,6 +79,13 @@ func (rulesMap accessRules) isAuthorized(reqs []*requestedAccess) bool { 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 @@ -117,11 +133,11 @@ func (kc *kubeClient) CanGetApplication() (bool, error) { } var getDeploymentRules = []*requestedAccess{ - {qualifiedResource{"", "deploymentconfigs"}, []string{verbGet}}, - {qualifiedResource{"", "replicationcontrollers"}, []string{verbList}}, - {qualifiedResource{"", "pods"}, []string{verbList}}, - {qualifiedResource{"", "services"}, []string{verbList}}, - {qualifiedResource{"", "routes"}, []string{verbList}}, + {&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 @@ -130,9 +146,9 @@ func (kc *kubeClient) CanGetDeployment(envName string) (bool, error) { } var scaleDeploymentRules = []*requestedAccess{ - {qualifiedResource{"", "deploymentconfigs"}, []string{verbGet}}, - {qualifiedResource{"", "deploymentconfigs/scale"}, []string{verbGet}}, - {qualifiedResource{"", "deploymentconfigs/scale"}, []string{verbUpdate}}, + {&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 @@ -141,9 +157,9 @@ func (kc *kubeClient) CanScaleDeployment(envName string) (bool, error) { } var deleteDeploymentRules = []*requestedAccess{ - {qualifiedResource{"", "services"}, []string{verbList, verbDelete}}, - {qualifiedResource{"", "routes"}, []string{verbList, verbDelete}}, - {qualifiedResource{"", "deploymentconfigs"}, []string{verbGet, verbDelete}}, + {&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 @@ -152,9 +168,9 @@ func (kc *kubeClient) CanDeleteDeployment(envName string) (bool, error) { } var getDeploymentStatsRules = []*requestedAccess{ - {qualifiedResource{"", "deploymentconfigs"}, []string{verbGet}}, - {qualifiedResource{"", "replicationcontrollers"}, []string{verbList}}, - {qualifiedResource{"", "pods"}, []string{verbList}}, + {&qualifiedResource{"", "deploymentconfigs"}, []string{verbGet}}, + {&qualifiedResource{"", "replicationcontrollers"}, []string{verbList}}, + {&qualifiedResource{"", "pods"}, []string{verbList}}, } // CanGetDeploymentStats returns whether the user is authorized to call KubeClientInterface.GetDeploymentStats @@ -182,12 +198,12 @@ func (kc *kubeClient) checkAuthorizedWithBuilds(envName string, reqs []*requeste const environmentTypeUser = "user" var getBuildConfigsAndBuildsRules = []*requestedAccess{ - {qualifiedResource{"", "buildconfigs"}, []string{verbList}}, - {qualifiedResource{"", "builds"}, []string{verbList}}, + {&qualifiedResource{"", "buildconfigs"}, []string{verbList}}, + {&qualifiedResource{"", "builds"}, []string{verbList}}, } var getBuildsRules = []*requestedAccess{ - {qualifiedResource{"", "builds"}, []string{verbList}}, + {&qualifiedResource{"", "builds"}, []string{verbList}}, } func (kc *kubeClient) checkAuthorizedInEnv(reqs []*requestedAccess, envName string) (bool, error) { @@ -200,7 +216,7 @@ func (kc *kubeClient) checkAuthorizedInEnv(reqs []*requestedAccess, envName stri } var getEnvironmentRules = []*requestedAccess{ - {qualifiedResource{"", "resourcequotas"}, []string{verbList}}, + {&qualifiedResource{"", "resourcequotas"}, []string{verbList}}, } // CanGetEnvironments returns whether the user is authorized to call KubeClientInterface.GetEnvironments diff --git a/kubernetes/deployments_access_blackbox_test.go b/kubernetes/deployments_access_blackbox_test.go index 36b9946180..46b6b720b8 100644 --- a/kubernetes/deployments_access_blackbox_test.go +++ b/kubernetes/deployments_access_blackbox_test.go @@ -119,6 +119,24 @@ func TestCanGetDeployment(t *testing.T) { 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", diff --git a/test/kubernetes/can-i-all-groups-resource.yaml b/test/kubernetes/can-i-all-groups-resource.yaml new file mode 100644 index 0000000000..5bd6fee1e2 --- /dev/null +++ b/test/kubernetes/can-i-all-groups-resource.yaml @@ -0,0 +1,8491 @@ +--- +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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..5d245f92d6 --- /dev/null +++ b/test/kubernetes/can-i-all-groups.yaml @@ -0,0 +1,8491 @@ +--- +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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..48b0d2c6ce --- /dev/null +++ b/test/kubernetes/can-i-all-resource.yaml @@ -0,0 +1,8491 @@ +--- +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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + headers: + Content-Type: + - application/json;charset=UTF-8 + status: 200 OK + code: 200 From 271c6276f03ea16eef1b304ad24e1859e0ce1b15 Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Wed, 22 Aug 2018 14:00:48 -0400 Subject: [PATCH 15/36] added ebaron deployments-check-k8s-auth branch --- .make/test.mk | 56 +- 17c1e9de-a89a-494b-91c4-819a013cb3b9 | 1 + Gopkg.lock | 9 +- Makefile.mine | 8 + actions/actions.go | 101 + actions/actions_whitebox_test.go | 180 + actions/change/changeset.go | 19 + actions/doc.go | 40 + actions/rules/action.go | 28 + actions/rules/action_field_set.go | 104 + actions/rules/action_field_set_test.go | 135 + actions/rules/action_nil.go | 17 + cico_run_e2e_tests.sh | 19 +- cico_setup.sh | 3 +- controller/comments.go | 3 +- controller/comments_blackbox_test.go | 18 +- controller/deployments.go | 141 + controller/deployments_blackbox_test.go | 191 +- controller/deployments_urlprovider.go | 15 +- controller/deployments_urlprovider_test.go | 40 +- .../ok-witype-change.res.headers.golden.json | 14 + .../ok-witype-change.res.payload.golden.json | 49 + .../workitem_type.res.payload.golden.json | 95 + .../list/ok_agile.res.payload.golden.json | 2 + .../list/ok_scrum.res.payload.golden.json | 1 + controller/work_item_events.go | 39 +- controller/work_item_events_test.go | 31 + controller/workitem.go | 59 +- controller/workitem_blackbox_test.go | 137 +- controller/workitemtype.go | 62 +- design/api.go | 6 + design/deployments.go | 14 + design/workitemtype.go | 2 +- goamiddleware/jwt_middleware.go | 149 + goamiddleware/jwt_shared.go | 179 + goamiddleware/jwt_token_context.go | 106 +- id/slice.go | 11 + id/slice_blackbox_test.go | 8 + jstconfig-pp.yaml | 10 + jstconfig-prod.yaml | 16 + kubernetes/deployments_access.go | 388 + .../deployments_access_blackbox_test.go | 458 + kubernetes/deployments_kubeclient.go | 139 +- .../deployments_kubeclient_blackbox_test.go | 309 +- .../deployments_kubeclient_whitebox_test.go | 4 + log/log.go | 10 +- main.go | 2 + migration/migration.go | 3 + migration/migration_blackbox_test.go | 75 +- .../103-user-email-notnull-notempty.sql | 6 + .../103-user-email-notnull-notempty.sql | 6 + minishift/kedge/db-tenant.yaml | 13 + minishift/kedge/proxy.yml | 19 + minishift/kedge/tenant.yml | 21 + spacetemplate/assets/agile.yaml | 2 + spacetemplate/assets/scrum.yaml | 2 + spacetemplate/importer/import_helper.go | 6 +- .../importer/importer_blackbox_test.go | 12 +- spacetemplate/importer/repository.go | 28 +- .../kubernetes/can-i-all-groups-resource.yaml | 8491 +++++++++++++++++ test/kubernetes/can-i-all-groups.yaml | 8491 +++++++++++++++++ test/kubernetes/can-i-all-resource.yaml | 8491 +++++++++++++++++ test/kubernetes/can-i-bad-resource.yaml | 8480 ++++++++++++++++ test/kubernetes/can-i-bad-rule.yaml | 8480 ++++++++++++++++ test/kubernetes/can-i-bad-verbs.yaml | 8480 ++++++++++++++++ test/kubernetes/can-i-empty-group.yaml | 8477 ++++++++++++++++ test/kubernetes/can-i-no-builds.yaml | 8478 ++++++++++++++++ test/kubernetes/can-i-no-dc.yaml | 8478 ++++++++++++++++ test/kubernetes/can-i-no-quotas.yaml | 8478 ++++++++++++++++ test/kubernetes/can-i-no-rules.yaml | 85 + test/kubernetes/can-i-no-status.yaml | 82 + test/kubernetes/can-i.yaml | 8479 ++++++++++++++++ .../deletedeployment-badroutes.yaml | 646 -- .../deletedeployment-badservices.yaml | 646 -- .../deletedeployment-delete-dc-error.yaml | 646 -- .../deletedeployment-delete-routes-error.yaml | 646 -- .../deletedeployment-delete-svc-error.yaml | 646 -- .../deletedeployment-get-dc-error.yaml | 646 -- .../deletedeployment-get-routes-error.yaml | 646 -- .../deletedeployment-get-svc-error.yaml | 646 -- .../kubernetes/deletedeployment-nobuilds.yaml | 646 -- test/kubernetes/deletedeployment-nodc.yaml | 646 -- .../kubernetes/deletedeployment-noroutes.yaml | 646 -- .../deletedeployment-noservices.yaml | 646 -- .../deletedeployment-wrongspace.yaml | 646 -- test/kubernetes/deletedeployment.yaml | 646 -- teststack.notgo | 40 + workitem/enum_type.go | 77 +- workitem/enum_type_blackbox_test.go | 222 +- workitem/enum_type_whitebox_test.go | 70 - workitem/event/event_repository.go | 30 +- .../event/event_repository_blackbox_test.go | 15 + workitem/field_definition.go | 37 +- workitem/json_storage.go | 20 +- workitem/list_type.go | 46 +- workitem/list_type_blackbox_test.go | 141 + workitem/simple_type.go | 44 +- workitem/simple_type_blackbox_test.go | 122 +- workitem/workitem.go | 113 + workitem/workitem_repository.go | 344 +- workitem/workitem_repository_blackbox_test.go | 224 +- workitem/workitemtype.go | 20 +- 102 files changed, 98248 insertions(+), 9452 deletions(-) create mode 100644 17c1e9de-a89a-494b-91c4-819a013cb3b9 create mode 100644 Makefile.mine create mode 100644 actions/actions.go create mode 100644 actions/actions_whitebox_test.go create mode 100644 actions/change/changeset.go create mode 100644 actions/doc.go create mode 100644 actions/rules/action.go create mode 100644 actions/rules/action_field_set.go create mode 100644 actions/rules/action_field_set_test.go create mode 100644 actions/rules/action_nil.go create mode 100755 controller/test-files/event/list/ok-witype-change.res.headers.golden.json create mode 100755 controller/test-files/event/list/ok-witype-change.res.payload.golden.json create mode 100755 controller/test-files/work_item/update/workitem_type.res.payload.golden.json create mode 100644 goamiddleware/jwt_middleware.go create mode 100644 goamiddleware/jwt_shared.go create mode 100644 jstconfig-pp.yaml create mode 100644 jstconfig-prod.yaml create mode 100644 kubernetes/deployments_access.go create mode 100644 kubernetes/deployments_access_blackbox_test.go create mode 100644 migration/sql-files/103-user-email-notnull-notempty.sql create mode 100644 migration/sql-test-files/103-user-email-notnull-notempty.sql create mode 100644 minishift/kedge/db-tenant.yaml create mode 100644 minishift/kedge/proxy.yml create mode 100644 minishift/kedge/tenant.yml create mode 100644 test/kubernetes/can-i-all-groups-resource.yaml create mode 100644 test/kubernetes/can-i-all-groups.yaml create mode 100644 test/kubernetes/can-i-all-resource.yaml create mode 100644 test/kubernetes/can-i-bad-resource.yaml create mode 100644 test/kubernetes/can-i-bad-rule.yaml create mode 100644 test/kubernetes/can-i-bad-verbs.yaml create mode 100644 test/kubernetes/can-i-empty-group.yaml create mode 100644 test/kubernetes/can-i-no-builds.yaml create mode 100644 test/kubernetes/can-i-no-dc.yaml create mode 100644 test/kubernetes/can-i-no-quotas.yaml create mode 100644 test/kubernetes/can-i-no-rules.yaml create mode 100644 test/kubernetes/can-i-no-status.yaml create mode 100644 test/kubernetes/can-i.yaml create mode 100644 teststack.notgo diff --git a/.make/test.mk b/.make/test.mk index 622384532a..37129d135e 100644 --- a/.make/test.mk +++ b/.make/test.mk @@ -124,6 +124,12 @@ ALL_PKGS_EXCLUDE_PATTERN = "vendor\|account\/tenant\|app\'\|tool\/cli\|design\|c GOANALYSIS_PKGS_EXCLUDE_PATTERN="vendor|account/tenant|app|client|tool/cli" GOANALYSIS_DIRS=$(shell go list -f {{.Dir}} ./... | grep -v -E $(GOANALYSIS_PKGS_EXCLUDE_PATTERN)) +# temporary directory for fabric8-test +FABRIC8_E2E_TEST_DIR = $(TMP_PATH)/fabric8-test + +# fabric8-test reporsitory +FABRIC8_E2E_TEST_REPO = "https://github.com/fabric8io/fabric8-test.git" + #------------------------------------------------------------------------------- # Normal test targets # @@ -187,13 +193,50 @@ test-remote-no-coverage: prebuild-check $(SOURCES) test-migration: prebuild-check migration/sqlbindata.go migration/sqlbindata_test.go F8_RESOURCE_DATABASE=1 F8_LOG_LEVEL=$(F8_LOG_LEVEL) go test $(GO_TEST_VERBOSITY_FLAG) github.com/fabric8-services/fabric8-wit/migration +# Starts the WIT server and waits until its running +define start-wit + echo "Starting WIT and ensuring that it is running..."; \ + F8_LOG_LEVEL=ERROR ./wit+pmcd.sh & + while ! nc -z localhost 8080 < /dev/null; do \ + printf .; \ + sleep 5 ; \ + done; \ + echo "WIT is RUNNING!"; +endef + +.PHONY: test-e2e +## Runs the end-to-end tests WITHOUT producing coverage files for each package. +test-e2e: $(BINARY_SERVER_BIN) + $(call log-info,"Running tests: $@") +ifeq ($(OS),Windows_NT) + $(error End to end tests currently cannot run on Windows based operating systems.) +endif + $(call download-docker-compose) +ifeq ($(UNAME_S),Darwin) + @echo "Running docker-compose with macOS network settings" + $(DOCKER_COMPOSE_BIN_ALT) -f docker-compose.macos.yml up -d db auth +else + @echo "Running docker-compose with Linux network settings" + $(DOCKER_COMPOSE_BIN_ALT) up -d db auth +endif + # Start the WIT server + $(call start-wit) + # Clone the fabric8-test repo + @if [ "$(FABRIC8_E2E_TEST_DIR)" ]; then \ + echo "Removing any existing dir $(FABRIC8_E2E_TEST_DIR)"; \ + rm -rf $(FABRIC8_E2E_TEST_DIR); \ + fi + $(GIT_BIN_NAME) clone --depth=1 $(FABRIC8_E2E_TEST_REPO) $(FABRIC8_E2E_TEST_DIR) + # Install e2e test deps and run the tests + $(FABRIC8_E2E_TEST_DIR)/EE_API_automation/cico_run_EE_tests_wit.sh + # Downloads docker-compose to tmp/docker-compose if it does not already exist. define download-docker-compose @if [ ! -f "$(DOCKER_COMPOSE_BIN_ALT)" ]; then \ echo "Downloading docker-compose to $(DOCKER_COMPOSE_BIN_ALT)"; \ UNAME_S=$(shell uname -s); \ UNAME_M=$(shell uname -m); \ - URL="https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$${UNAME_S}-$${UNAME_M}"; \ + URL="https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$${UNAME_S}-$${UNAME_M}"; \ curl --silent -L $${URL} > $(DOCKER_COMPOSE_BIN_ALT); \ chmod +x $(DOCKER_COMPOSE_BIN_ALT); \ fi @@ -542,3 +585,14 @@ CLEAN_TARGETS += clean-coverage-remote ## Removes remote test coverage file clean-coverage-remote: -@rm -f $(COV_PATH_REMOTE) + +CLEAN_TARGETS += clean-e2e +.PHONY: clean-e2e +## Cleans up environment of e2e tests +clean-e2e: + ## Kills the WIT process + $(shell ps aux | grep 'bin/[w]it' | awk '{print $$2}' | xargs kill) + ## Removes the end-to-end (e2e) test directory + -rm -rf $(FABRIC8_E2E_TEST_DIR) + + diff --git a/17c1e9de-a89a-494b-91c4-819a013cb3b9 b/17c1e9de-a89a-494b-91c4-819a013cb3b9 new file mode 100644 index 0000000000..b8f4237e27 --- /dev/null +++ b/17c1e9de-a89a-494b-91c4-819a013cb3b9 @@ -0,0 +1 @@ +{"data":{"attributes":{"created-at":"2018-07-02T04:00:57.297291Z","description":"","name":"rgarg-osiotest1-AGILE-space-2018-07-02T05-00-57","updated-at":"2018-07-02T04:00:57.297291Z","version":0},"id":"17c1e9de-a89a-494b-91c4-819a013cb3b9","links":{"backlog":{"meta":{"totalCount":46},"self":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/backlog"},"filters":"https://api.openshift.io/api/filters","related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9","self":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9","workitemlinktypes":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418/workitemlinktypes","workitemtypes":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418/workitemtypes"},"relationships":{"areas":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/areas"}},"backlog":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/backlog"},"meta":{"totalCount":46}},"codebases":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/codebases"}},"collaborators":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/collaborators"}},"filters":{"links":{"related":"https://api.openshift.io/api/filters"}},"iterations":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/iterations"}},"labels":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/labels"}},"owned-by":{"data":{"id":"02227dc6-f4fe-451b-9549-4c5b7becc5e7","type":"identities"},"links":{"related":"https://api.openshift.io/api/users/02227dc6-f4fe-451b-9549-4c5b7becc5e7"}},"space-template":{"data":{"id":"f405fa41-a8bb-46db-8800-2dbe13da1418","type":"spacetemplates"},"links":{"related":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418","self":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418"}},"workitemlinktypes":{"links":{"related":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418/workitemlinktypes"}},"workitems":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/workitems"}},"workitemtypegroups":{"links":{"related":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418/workitemtypegroups"}},"workitemtypes":{"links":{"related":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418/workitemtypes"}}},"type":"spaces"}} diff --git a/Gopkg.lock b/Gopkg.lock index e7f0c698e9..7fe4ef86ea 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -274,7 +274,10 @@ [[projects]] name = "github.com/hashicorp/golang-lru" - packages = ["simplelru"] + packages = [ + ".", + "simplelru" + ] revision = "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" [[projects]] @@ -737,6 +740,7 @@ "pkg/runtime/serializer/versioning", "pkg/selection", "pkg/types", + "pkg/util/cache", "pkg/util/clock", "pkg/util/diff", "pkg/util/errors", @@ -802,6 +806,7 @@ "pkg/version", "rest", "rest/watch", + "tools/cache", "tools/clientcmd/api", "tools/metrics", "transport", @@ -815,6 +820,6 @@ [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "2cc7ef0be20098d353879618874ca294af4e31fb40a9612f0949ec06419da65f" + inputs-digest = "a23e61b6cebab22dcc9d73e246fe372dea2e9d1559e558bef42c0badebf4c731" solver-name = "gps-cdcl" solver-version = 1 diff --git a/Makefile.mine b/Makefile.mine new file mode 100644 index 0000000000..ba2561422f --- /dev/null +++ b/Makefile.mine @@ -0,0 +1,8 @@ + +.PHONY: dev-pp +dev-pp: prebuild-check deps generate $(FRESH_BIN) docker-compose-up + FABRIC8_WIT_API_URL=https://api.prod-preview.openshift.io F8_CONFIG_FILE_PATH=jstconfig-pp.yaml F8_DEVELOPER_MODE_ENABLED=true $(FRESH_BIN) + +.PHONY: dev-prod +dev-prod: prebuild-check deps generate $(FRESH_BIN) docker-compose-up + FABRIC8_WIT_API_URL=https://api.openshift.io F8_CONFIG_FILE_PATH=jstconfig-prod.yaml F8_DEVELOPER_MODE_ENABLED=true $(FRESH_BIN) diff --git a/actions/actions.go b/actions/actions.go new file mode 100644 index 0000000000..a2db8f80e8 --- /dev/null +++ b/actions/actions.go @@ -0,0 +1,101 @@ +package actions + +/* + The actions system is a key component for process automation in WIT. It provides + a way of executing user-configurable, dynamic process steps depending on user + settings, schema settings and events in the WIT. + + The idea here is to provide a simple, yet powerful "publish-subscribe" system that + can connect any "event" in the system to any "action" with a clear decoupling + of events and actions with the goal of making the associations later dynamic and + configurable by the user ("user connects this event to this action"). Think + of a "IFTTT for WIT" (https://en.wikipedia.org/wiki/IFTTT). + + Actions are generic and atomic execution steps that do exactly one task and + are configurable. The actions system around the actions provide a key-based + execution of the actions. + + Some examples for an application of this system would be: + - closing all children of a parent WI that is being closed (the user connects the + "close" attribute change event of a WI to an action that closes all WIs of + a matching query). + - sending out notifications for mentions on markdown (the system executes an + action "send notification" for every mention found in markdown values). + - moving all WIs from one iteration to the next in the time sequence when + the original iteration is closed. + + For all these automations, the actions system provides a re-usable, flexible + and later user configurable way of doing that without creating lots of + custom code and/or custom process implementations that are hardcoded in the + WIT. +*/ + +import ( + "context" + + errs "github.com/pkg/errors" + uuid "github.com/satori/go.uuid" + + "github.com/fabric8-services/fabric8-wit/actions/change" + "github.com/fabric8-services/fabric8-wit/actions/rules" + "github.com/fabric8-services/fabric8-wit/application" +) + +// ExecuteActionsByOldNew executes all actions given in the actionConfigList +// using the mapped configuration strings and returns the new context entity. +// It takes the old version and the new version of the context entity, comparing them. +func ExecuteActionsByOldNew(ctx context.Context, db application.DB, userID uuid.UUID, oldContext change.Detector, newContext change.Detector, actionConfigList map[string]string) (change.Detector, change.Set, error) { + if oldContext == nil || newContext == nil { + return nil, nil, errs.New("execute actions called with nil entities") + } + contextChanges, err := oldContext.ChangeSet(newContext) + if err != nil { + return nil, nil, err + } + return ExecuteActionsByChangeset(ctx, db, userID, newContext, contextChanges, actionConfigList) +} + +// ExecuteActionsByChangeset executes all actions given in the actionConfigs +// using the mapped configuration strings and returns the new context entity. +// It takes a []Change that describes the differences between the old and the new context. +func ExecuteActionsByChangeset(ctx context.Context, db application.DB, userID uuid.UUID, newContext change.Detector, contextChanges []change.Change, actionConfigs map[string]string) (change.Detector, change.Set, error) { + var actionChanges change.Set + for actionKey := range actionConfigs { + var err error + actionConfig := actionConfigs[actionKey] + switch actionKey { + case rules.ActionKeyNil: + newContext, actionChanges, err = executeAction(rules.ActionNil{}, actionConfig, newContext, contextChanges, &actionChanges) + case rules.ActionKeyFieldSet: + newContext, actionChanges, err = executeAction(rules.ActionFieldSet{ + Db: db, + Ctx: ctx, + UserID: &userID, + }, actionConfig, newContext, contextChanges, &actionChanges) + /* commented out for now until this rule is added + case rules.ActionKeyStateToMetastate: + newContext, actionChanges, err = executeAction(rules.ActionStateToMetaState{ + Db: db, + Ctx: ctx, + UserID: &userID, + }, actionConfig, newContext, contextChanges, &actionChanges) + */ + default: + return nil, nil, errs.New("action key " + actionKey + " is unknown") + } + if err != nil { + return nil, nil, err + } + } + return newContext, actionChanges, nil +} + +// executeAction executes the action given. The actionChanges contain the changes made by +// prior action executions. The execution is expected to add/update their changes on this +// change set. +func executeAction(act rules.Action, configuration string, newContext change.Detector, contextChanges change.Set, actionChanges *change.Set) (change.Detector, change.Set, error) { + if act == nil { + return nil, nil, errs.New("rule can not be nil") + } + return act.OnChange(newContext, contextChanges, configuration, actionChanges) +} diff --git a/actions/actions_whitebox_test.go b/actions/actions_whitebox_test.go new file mode 100644 index 0000000000..a7f3bfe637 --- /dev/null +++ b/actions/actions_whitebox_test.go @@ -0,0 +1,180 @@ +package actions + +import ( + "testing" + + "github.com/fabric8-services/fabric8-wit/gormtestsupport" + "github.com/fabric8-services/fabric8-wit/resource" + tf "github.com/fabric8-services/fabric8-wit/test/testfixture" + "github.com/fabric8-services/fabric8-wit/workitem" + + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" +) + +func TestSuiteAction(t *testing.T) { + resource.Require(t, resource.Database) + suite.Run(t, &ActionSuite{DBTestSuite: gormtestsupport.NewDBTestSuite()}) +} + +type ActionSuite struct { + gormtestsupport.DBTestSuite +} + +func createWICopy(wi workitem.WorkItem, state string, boardcolumns []interface{}) workitem.WorkItem { + var wiCopy workitem.WorkItem + wiCopy.ID = wi.ID + wiCopy.SpaceID = wi.SpaceID + wiCopy.Type = wi.Type + wiCopy.Number = wi.Number + wiCopy.Fields = map[string]interface{}{} + for k := range wi.Fields { + wiCopy.Fields[k] = wi.Fields[k] + } + wiCopy.Fields[workitem.SystemState] = state + wiCopy.Fields[workitem.SystemBoardcolumns] = boardcolumns + return wiCopy +} + +func (s *ActionSuite) TestChangeSet() { + fxt := tf.NewTestFixture(s.T(), s.DB, tf.CreateWorkItemEnvironment(), tf.WorkItems(2)) + + s.T().Run("different ID", func(t *testing.T) { + _, err := fxt.WorkItems[0].ChangeSet(*fxt.WorkItems[1]) + require.Error(t, err) + }) + + s.T().Run("same instance", func(t *testing.T) { + changes, err := fxt.WorkItems[0].ChangeSet(*fxt.WorkItems[0]) + require.NoError(t, err) + require.Empty(t, changes) + }) + + s.T().Run("no changes, same column order", func(t *testing.T) { + wiCopy := createWICopy(*fxt.WorkItems[0], workitem.SystemStateNew, []interface{}{"bcid0", "bcid1"}) + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + changes, err := fxt.WorkItems[0].ChangeSet(wiCopy) + require.NoError(t, err) + require.Empty(t, changes) + }) + + s.T().Run("no changes, mixed column order", func(t *testing.T) { + wiCopy := createWICopy(*fxt.WorkItems[0], workitem.SystemStateNew, []interface{}{"bcid1", "bcid0"}) + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + changes, err := fxt.WorkItems[0].ChangeSet(wiCopy) + require.NoError(t, err) + require.Empty(t, changes) + }) + + s.T().Run("state changes", func(t *testing.T) { + wiCopy := createWICopy(*fxt.WorkItems[0], workitem.SystemStateNew, []interface{}{"bcid0", "bcid1"}) + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateOpen + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + changes, err := fxt.WorkItems[0].ChangeSet(wiCopy) + require.NoError(t, err) + require.Len(t, changes, 1) + require.Equal(t, workitem.SystemState, changes[0].AttributeName) + require.Equal(t, workitem.SystemStateOpen, changes[0].NewValue) + require.Equal(t, workitem.SystemStateNew, changes[0].OldValue) + }) + + s.T().Run("column changes", func(t *testing.T) { + wiCopy := createWICopy(*fxt.WorkItems[0], workitem.SystemStateNew, []interface{}{"bcid0"}) + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + changes, err := fxt.WorkItems[0].ChangeSet(wiCopy) + require.NoError(t, err) + require.Len(t, changes, 1) + require.Equal(t, workitem.SystemBoardcolumns, changes[0].AttributeName) + require.Equal(t, wiCopy.Fields[workitem.SystemBoardcolumns], changes[0].OldValue) + require.Equal(t, fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns], changes[0].NewValue) + }) + + s.T().Run("multiple changes", func(t *testing.T) { + wiCopy := createWICopy(*fxt.WorkItems[0], workitem.SystemStateOpen, []interface{}{"bcid0"}) + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + changes, err := fxt.WorkItems[0].ChangeSet(wiCopy) + require.NoError(t, err) + require.Len(t, changes, 2) + // we intentionally test the order here as the code under test needs + // to be expanded later, supporting more changes and this is an + // integrity test on the current impl. + require.Equal(t, workitem.SystemState, changes[0].AttributeName) + require.Equal(t, workitem.SystemStateNew, changes[0].NewValue) + require.Equal(t, workitem.SystemStateOpen, changes[0].OldValue) + require.Equal(t, workitem.SystemBoardcolumns, changes[1].AttributeName) + require.Equal(t, fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns], changes[1].NewValue) + require.Equal(t, wiCopy.Fields[workitem.SystemBoardcolumns], changes[1].OldValue) + }) + + s.T().Run("new instance", func(t *testing.T) { + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{} + changes, err := fxt.WorkItems[0].ChangeSet(nil) + require.NoError(t, err) + require.Len(t, changes, 1) + require.Equal(t, workitem.SystemState, changes[0].AttributeName) + require.Equal(t, workitem.SystemStateNew, changes[0].NewValue) + require.Nil(t, changes[0].OldValue) + }) +} + +func (s *ActionSuite) TestActionExecution() { + fxt := tf.NewTestFixture(s.T(), s.DB, tf.CreateWorkItemEnvironment(), tf.WorkItems(2)) + userID := fxt.Identities[0].ID + + s.T().Run("by Old New", func(t *testing.T) { + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + newVersion := createWICopy(*fxt.WorkItems[0], workitem.SystemStateOpen, []interface{}{"bcid0", "bcid1"}) + _, changes, err := ExecuteActionsByOldNew(s.Ctx, s.GormDB, userID, fxt.WorkItems[0], newVersion, map[string]string{ + "Nil": "{ noConfig: 'none' }", + }) + require.NoError(t, err) + require.Len(t, changes, 0) + }) + + s.T().Run("by ChangeSet", func(t *testing.T) { + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + newVersion := createWICopy(*fxt.WorkItems[0], workitem.SystemStateOpen, []interface{}{"bcid0", "bcid1"}) + contextChanges, err := fxt.WorkItems[0].ChangeSet(newVersion) + require.NoError(t, err) + afterActionWI, changes, err := ExecuteActionsByChangeset(s.Ctx, s.GormDB, userID, newVersion, contextChanges, map[string]string{ + "Nil": "{ noConfig: 'none' }", + }) + require.NoError(t, err) + require.Len(t, changes, 0) + require.Equal(t, workitem.SystemStateOpen, afterActionWI.(workitem.WorkItem).Fields["system.state"]) + }) + + s.T().Run("unknown rule", func(t *testing.T) { + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + newVersion := createWICopy(*fxt.WorkItems[0], workitem.SystemStateOpen, []interface{}{"bcid0", "bcid1"}) + contextChanges, err := fxt.WorkItems[0].ChangeSet(newVersion) + require.NoError(t, err) + _, _, err = ExecuteActionsByChangeset(s.Ctx, s.GormDB, userID, newVersion, contextChanges, map[string]string{ + "unknownRule": "{ noConfig: 'none' }", + }) + require.NotNil(t, err) + }) + + s.T().Run("sideffects", func(t *testing.T) { + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + newVersion := createWICopy(*fxt.WorkItems[0], workitem.SystemStateOpen, []interface{}{"bcid0", "bcid1"}) + contextChanges, err := fxt.WorkItems[0].ChangeSet(newVersion) + require.NoError(t, err) + // Intentionally not using a constant here! + afterActionWI, changes, err := ExecuteActionsByChangeset(s.Ctx, s.GormDB, userID, newVersion, contextChanges, map[string]string{ + "FieldSet": "{ \"system.state\": \"resolved\" }", + }) + require.NoError(t, err) + require.Len(t, changes, 1) + require.Equal(t, workitem.SystemStateResolved, afterActionWI.(workitem.WorkItem).Fields[workitem.SystemState]) + }) +} diff --git a/actions/change/changeset.go b/actions/change/changeset.go new file mode 100644 index 0000000000..3245c7826e --- /dev/null +++ b/actions/change/changeset.go @@ -0,0 +1,19 @@ +package change + +// Set is a set of changes to an entitiy. +type Set []Change + +// Detector defines funcs for getting a changeset from two +// instances of a class. This interface has to be implemented by +// all entities that should trigger action rule runs. +type Detector interface { + ChangeSet(older Detector) (Set, error) +} + +// Change defines a set of changed values in an entity. It holds +// the attribute name as the key and old and new values. +type Change struct { + AttributeName string + NewValue interface{} + OldValue interface{} +} diff --git a/actions/doc.go b/actions/doc.go new file mode 100644 index 0000000000..3f062fc6c1 --- /dev/null +++ b/actions/doc.go @@ -0,0 +1,40 @@ +/* +Package actions system is a key component for process automation in WIT. It provides a +way of executing user-configurable, dynamic process steps depending on user +settings, schema settings and events in the WIT. + +The idea here is to provide a simple, yet powerful "signal-slot" system that +can connect any "event" in the system to any "action" with a clear decoupling of +events and actions with the goal of making the associations later dynamic and +configurable by the user ("user connects this event to this action"). Think +of a "IFTTT for WIT". + +Actions are generic and atomic execution steps that do exactly one task and are +configurable. The actions system around the actions provide a key-based +execution of the actions. + +Some examples for an application of this system would be: + * closing all childs of a parent that is being closed (the user connects the + "close" attribute change event of a WI to an action that closes all + WIs of a matching query). + * sending out notifications for mentions on markdown (the system executes + an action "send notification" for every mention found in markdown values). + * moving all WIs from one iteration to the next in the time sequence when + the original iteration is closed. + +For all these automations, the actions system provides a re-usable, flexible and +later user configurable way of doing that without creating lots of custom code +and/or custom process implementations that are hardcoded in the WIT. + +The current PR provides the basic actions infrastructure and an implementation of +an example action rules for testing. + +This package provides two methods ExecuteActionsByOldNew() and ExecuteActionsByChangeset() +that can be called by a client (for example the controller on a request) with an entity +that is the context of the action run and a configuration for the context. The +configuration consists of a list of rule keys (identifying the rules that apply) and +respective configuration for the rules. The actions system will run the rules +sequentially and return the new context entity and a set of changes done while running +the rules. Note that executing actions may have sideffects on data beyond the context. +*/ +package actions diff --git a/actions/rules/action.go b/actions/rules/action.go new file mode 100644 index 0000000000..db7b7de4a6 --- /dev/null +++ b/actions/rules/action.go @@ -0,0 +1,28 @@ +package rules + +import "github.com/fabric8-services/fabric8-wit/actions/change" + +const ( + // ActionKeyNil is the key for the ActionKeyNil action rule. + ActionKeyNil = "Nil" + // ActionKeyFieldSet is the key for the ActionKeyFieldSet action rule. + ActionKeyFieldSet = "FieldSet" + // ActionKeyStateToMetastate is the key for the ActionKeyStateToMetastate action rule. + ActionKeyStateToMetastate = "BidirectionalStateToColumn" + + // ActionKeyStateToMetastateConfigMetastate is the key for the ActionKeyStateToMetastateConfigMetastate config parameter. + ActionKeyStateToMetastateConfigMetastate = "metaState" +) + +// Action defines an action on change of an entity. Executing an +// Action might have sideffects, but will always return the original +// given context with all changes of the Action to this context. Note +// that the execution may have sideeffects on other entities beyond the +// context. +type Action interface { + // OnChange executes this action by looking at a change set of + // updated attributes. It returns the new context. Note that this + // needs the new (after change) context and the old value(s) as + // part of the changeset. + OnChange(newContext change.Detector, contextChanges change.Set, configuration string, actionChanges *change.Set) (change.Detector, change.Set, error) +} diff --git a/actions/rules/action_field_set.go b/actions/rules/action_field_set.go new file mode 100644 index 0000000000..6aae26d4ea --- /dev/null +++ b/actions/rules/action_field_set.go @@ -0,0 +1,104 @@ +package rules + +import ( + "context" + "encoding/json" + "reflect" + + errs "github.com/pkg/errors" + uuid "github.com/satori/go.uuid" + + "github.com/fabric8-services/fabric8-wit/actions/change" + "github.com/fabric8-services/fabric8-wit/application" + "github.com/fabric8-services/fabric8-wit/workitem" +) + +// ActionFieldSet takes a configuration JSON object that has field +// names as the keys and a value as the argument. It updates the +// given ChangeDetector and sets the Field[key] value to the +// values given. Note that this only works on WorkItems. +type ActionFieldSet struct { + Db application.DB + Ctx context.Context + UserID *uuid.UUID +} + +// make sure the rule is implementing the interface. +var _ Action = ActionFieldSet{} + +func (act ActionFieldSet) storeWorkItem(wi *workitem.WorkItem) (*workitem.WorkItem, error) { + if act.Ctx == nil { + return nil, errs.New("context is nil") + } + if act.Db == nil { + return nil, errs.New("database is nil") + } + if act.UserID == nil { + return nil, errs.New("userID is nil") + } + var storeResultWorkItem *workitem.WorkItem + err := application.Transactional(act.Db, func(appl application.Application) error { + var err error + storeResultWorkItem, err = appl.WorkItems().Save(act.Ctx, wi.SpaceID, *wi, *act.UserID) + if err != nil { + return errs.Wrap(err, "error updating work item") + } + return nil + }) + if err != nil { + return nil, err + } + return storeResultWorkItem, nil +} + +// OnChange executes the action rule. +func (act ActionFieldSet) OnChange(newContext change.Detector, contextChanges change.Set, configuration string, actionChanges *change.Set) (change.Detector, change.Set, error) { + // check if the newContext is a WorkItem, fail otherwise. + wiContext, ok := newContext.(workitem.WorkItem) + if !ok { + return nil, nil, errs.New("given context is not a WorkItem: " + reflect.TypeOf(newContext).String()) + } + // deserialize the config JSON. + var rawType map[string]interface{} + err := json.Unmarshal([]byte(configuration), &rawType) + if err != nil { + return nil, nil, errs.Wrap(err, "failed to unmarshall from action configuration to a map: "+configuration) + } + // load WIT. + wit, err := act.Db.WorkItemTypes().Load(act.Ctx, wiContext.Type) + if err != nil { + return nil, nil, errs.Wrap(err, "error loading work item type: "+err.Error()) + } + // iterate over the fields. + for k, v := range rawType { + if wiContext.Fields[k] != v { + fieldType, ok := wit.Fields[k] + if !ok { + return nil, nil, errs.New("unknown field name: " + k) + } + *actionChanges = append(*actionChanges, change.Change{ + AttributeName: k, + NewValue: v, + OldValue: wiContext.Fields[k], + }) + newValue, err := fieldType.Type.ConvertToModel(v) + if err != nil { + return nil, nil, errs.Wrap(err, "error converting new value to model") + } + wiContext.Fields[k] = newValue + } + } + // store the WorkItem. + actionResultContext, err := act.storeWorkItem(&wiContext) + if err != nil { + return nil, nil, err + } + // iterate over the resulting wi, see if all keys are there. + // if not, the key was an unknown key. + for k := range rawType { + if _, ok := actionResultContext.Fields[k]; !ok { + return nil, nil, errs.New("field attribute unknown: " + k) + } + } + return *actionResultContext, *actionChanges, nil +} diff --git a/actions/rules/action_field_set_test.go b/actions/rules/action_field_set_test.go new file mode 100644 index 0000000000..e1a26f443f --- /dev/null +++ b/actions/rules/action_field_set_test.go @@ -0,0 +1,135 @@ +package rules + +import ( + "testing" + + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" + + "github.com/fabric8-services/fabric8-wit/actions/change" + "github.com/fabric8-services/fabric8-wit/gormtestsupport" + "github.com/fabric8-services/fabric8-wit/resource" + tf "github.com/fabric8-services/fabric8-wit/test/testfixture" + "github.com/fabric8-services/fabric8-wit/workitem" +) + +func TestSuiteActionFieldSet(t *testing.T) { + resource.Require(t, resource.Database) + suite.Run(t, &ActionFieldSetSuite{DBTestSuite: gormtestsupport.NewDBTestSuite()}) +} + +type ActionFieldSetSuite struct { + gormtestsupport.DBTestSuite +} + +func createWICopy(wi workitem.WorkItem, state string, boardcolumns []interface{}) workitem.WorkItem { + var wiCopy workitem.WorkItem + wiCopy.ID = wi.ID + wiCopy.SpaceID = wi.SpaceID + wiCopy.Type = wi.Type + wiCopy.Number = wi.Number + wiCopy.Fields = map[string]interface{}{} + for k := range wi.Fields { + wiCopy.Fields[k] = wi.Fields[k] + } + wiCopy.Fields[workitem.SystemState] = state + wiCopy.Fields[workitem.SystemBoardcolumns] = boardcolumns + return wiCopy +} + +func (s *ActionFieldSetSuite) TestActionExecution() { + fxt := tf.NewTestFixture(s.T(), s.DB, tf.CreateWorkItemEnvironment(), tf.WorkItems(2)) + require.NotNil(s.T(), fxt) + require.Len(s.T(), fxt.WorkItems, 2) + + s.T().Run("sideffects", func(t *testing.T) { + fxt := tf.NewTestFixture(t, s.DB, tf.CreateWorkItemEnvironment(), tf.WorkItems(2)) + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + newVersion := createWICopy(*fxt.WorkItems[0], workitem.SystemStateOpen, []interface{}{"bcid0", "bcid1"}) + contextChanges, err := fxt.WorkItems[0].ChangeSet(newVersion) + require.NoError(t, err) + action := ActionFieldSet{ + Db: s.GormDB, + Ctx: s.Ctx, + UserID: &fxt.Identities[0].ID, + } + var convertChanges change.Set + // Not using constants here intentionally. + afterActionWI, convertChanges, err := action.OnChange(newVersion, contextChanges, "{ \"system.state\": \"resolved\" }", &convertChanges) + require.NoError(t, err) + require.Len(t, convertChanges, 1) + require.Equal(t, workitem.SystemState, convertChanges[0].AttributeName) + require.Equal(t, workitem.SystemStateOpen, convertChanges[0].OldValue) + require.Equal(t, workitem.SystemStateResolved, convertChanges[0].NewValue) + require.Equal(t, workitem.SystemStateResolved, afterActionWI.(workitem.WorkItem).Fields[workitem.SystemState]) + }) + + s.T().Run("stacking", func(t *testing.T) { + fxt := tf.NewTestFixture(t, s.DB, tf.CreateWorkItemEnvironment(), tf.WorkItems(2)) + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + newVersion := createWICopy(*fxt.WorkItems[0], workitem.SystemStateOpen, []interface{}{"bcid0", "bcid1"}) + contextChanges, err := fxt.WorkItems[0].ChangeSet(newVersion) + require.NoError(t, err) + action := ActionFieldSet{ + Db: s.GormDB, + Ctx: s.Ctx, + UserID: &fxt.Identities[0].ID, + } + var convertChanges change.Set + // Not using constants here intentionally. + afterActionWI, convertChanges, err := action.OnChange(newVersion, contextChanges, "{ \"system.state\": \"resolved\" }", &convertChanges) + require.NoError(t, err) + require.Len(t, convertChanges, 1) + require.Equal(t, workitem.SystemState, convertChanges[0].AttributeName) + require.Equal(t, workitem.SystemStateOpen, convertChanges[0].OldValue) + require.Equal(t, workitem.SystemStateResolved, convertChanges[0].NewValue) + require.Equal(t, workitem.SystemStateResolved, afterActionWI.(workitem.WorkItem).Fields[workitem.SystemState]) + // doing another change, the convertChange needs to stack. + afterActionWI, convertChanges, err = action.OnChange(afterActionWI, change.Set{}, "{ \"system.state\": \"new\" }", &convertChanges) + require.NoError(t, err) + require.Len(t, convertChanges, 2) + require.Equal(t, workitem.SystemState, convertChanges[0].AttributeName) + require.Equal(t, workitem.SystemStateOpen, convertChanges[0].OldValue) + require.Equal(t, workitem.SystemStateResolved, convertChanges[0].NewValue) + require.Equal(t, workitem.SystemState, convertChanges[1].AttributeName) + require.Equal(t, workitem.SystemStateResolved, convertChanges[1].OldValue) + require.Equal(t, workitem.SystemStateNew, convertChanges[1].NewValue) + require.Equal(t, workitem.SystemStateNew, afterActionWI.(workitem.WorkItem).Fields[workitem.SystemState]) + }) + + s.T().Run("unknown field", func(t *testing.T) { + fxt := tf.NewTestFixture(t, s.DB, tf.CreateWorkItemEnvironment(), tf.WorkItems(2)) + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + newVersion := createWICopy(*fxt.WorkItems[0], workitem.SystemStateOpen, []interface{}{"bcid0", "bcid1"}) + contextChanges, err := fxt.WorkItems[0].ChangeSet(newVersion) + require.NoError(t, err) + action := ActionFieldSet{ + Db: s.GormDB, + Ctx: s.Ctx, + UserID: &fxt.Identities[0].ID, + } + var convertChanges change.Set + _, _, err = action.OnChange(newVersion, contextChanges, "{ \"system.notavailable\": \"updatedState\" }", &convertChanges) + require.NotNil(t, err) + }) + + s.T().Run("non-json configuration", func(t *testing.T) { + fxt := tf.NewTestFixture(t, s.DB, tf.CreateWorkItemEnvironment(), tf.WorkItems(2)) + fxt.WorkItems[0].Fields[workitem.SystemState] = workitem.SystemStateNew + fxt.WorkItems[0].Fields[workitem.SystemBoardcolumns] = []interface{}{"bcid0", "bcid1"} + newVersion := createWICopy(*fxt.WorkItems[0], workitem.SystemStateOpen, []interface{}{"bcid0", "bcid1"}) + contextChanges, err := fxt.WorkItems[0].ChangeSet(newVersion) + require.NoError(t, err) + action := ActionFieldSet{ + Db: s.GormDB, + Ctx: s.Ctx, + UserID: &fxt.Identities[0].ID, + } + var convertChanges change.Set + _, convertChanges, err = action.OnChange(newVersion, contextChanges, "someNonJSON", &convertChanges) + require.NotNil(t, err) + }) +} diff --git a/actions/rules/action_nil.go b/actions/rules/action_nil.go new file mode 100644 index 0000000000..8a005da3ee --- /dev/null +++ b/actions/rules/action_nil.go @@ -0,0 +1,17 @@ +package rules + +import ( + "github.com/fabric8-services/fabric8-wit/actions/change" +) + +// ActionNil is a dummy action rule that does nothing and has no sideffects. +type ActionNil struct { +} + +// make sure the rule is implementing the interface. +var _ Action = ActionNil{} + +// OnChange executes the action rule. +func (act ActionNil) OnChange(newContext change.Detector, contextChanges change.Set, configuration string, actionChanges *change.Set) (change.Detector, change.Set, error) { + return newContext, nil, nil +} diff --git a/cico_run_e2e_tests.sh b/cico_run_e2e_tests.sh index b6ee4586a3..67d6783c29 100755 --- a/cico_run_e2e_tests.sh +++ b/cico_run_e2e_tests.sh @@ -1,8 +1,17 @@ #!/bin/bash -echo "The end to end tests check will be implemented in" -echo "https://github.com/fabric8-services/fabric8-wit/pull/2197 " -echo "but for the CI to execute the task in an individual job we need" -echo "to have an \".sh\" file in place." +. cico_setup.sh -exit 1 +load_jenkins_vars; + +install_deps; + +make docker-start + +make docker-build + +trap "make clean-e2e" EXIT + +make test-e2e + +echo "CICO: ran e2e-tests" \ No newline at end of file diff --git a/cico_setup.sh b/cico_setup.sh index 59673f42be..f00af10ffd 100644 --- a/cico_setup.sh +++ b/cico_setup.sh @@ -38,7 +38,8 @@ function install_deps() { docker \ make \ git \ - curl + curl \ + nc service docker start diff --git a/controller/comments.go b/controller/comments.go index 93038d3268..5cc7d00790 100644 --- a/controller/comments.go +++ b/controller/comments.go @@ -3,7 +3,6 @@ package controller import ( "context" "fmt" - "html" "net/http" "github.com/fabric8-services/fabric8-wit/app" @@ -216,7 +215,7 @@ func ConvertComment(request *http.Request, comment comment.Comment, additional . ID: &comment.ID, Attributes: &app.CommentAttributes{ Body: &comment.Body, - BodyRendered: ptr.String(rendering.RenderMarkupToHTML(html.EscapeString(comment.Body), comment.Markup)), + BodyRendered: ptr.String(rendering.RenderMarkupToHTML(comment.Body, comment.Markup)), Markup: ptr.String(rendering.NilSafeGetMarkup(&comment.Markup)), CreatedAt: &comment.CreatedAt, UpdatedAt: &comment.UpdatedAt, diff --git a/controller/comments_blackbox_test.go b/controller/comments_blackbox_test.go index 48c2a427c1..e93dab962c 100644 --- a/controller/comments_blackbox_test.go +++ b/controller/comments_blackbox_test.go @@ -3,7 +3,6 @@ package controller_test import ( "context" "fmt" - "html" "strings" "testing" "time" @@ -155,7 +154,7 @@ func assertComment(t *testing.T, resultData *app.Comment, expectedIdentity accou assert.Equal(t, expectedBody, *resultData.Attributes.Body) require.NotNil(t, resultData.Attributes.Markup) assert.Equal(t, expectedMarkup, *resultData.Attributes.Markup) - assert.Equal(t, rendering.RenderMarkupToHTML(html.EscapeString(expectedBody), expectedMarkup), *resultData.Attributes.BodyRendered) + assert.Equal(t, rendering.RenderMarkupToHTML(expectedBody, expectedMarkup), *resultData.Attributes.BodyRendered) require.NotNil(t, resultData.Relationships) require.NotNil(t, resultData.Relationships.Creator) require.NotNil(t, resultData.Relationships.Creator.Data) @@ -302,6 +301,21 @@ func (s *CommentsSuite) TestShowCommentWithEscapedScriptInjection() { assertComment(s.T(), result.Data, s.testIdentity, "", rendering.SystemMarkupPlainText) } +func (s *CommentsSuite) TestShowCommentWithTextAndCodeblock() { + // given + fxt := tf.NewTestFixture(s.T(), s.DB, tf.CreateWorkItemEnvironment(), tf.WorkItems(1)) + wiID := fxt.WorkItems[0].ID + body := "Hello, World \n```\n { \"foo\":\"bar\" } \n``` " + expectedBody := "

Hello, World

\n\n
 { "foo":"bar" } \n
\n" + c := s.createWorkItemComment(s.testIdentity, wiID, body, &markdownMarkup, nil) + // when + userSvc, _, _, _, commentsCtrl := s.securedControllers(s.testIdentity) + _, result := test.ShowCommentsOK(s.T(), userSvc.Context, userSvc, commentsCtrl, *c.Data.ID, nil, nil) + // then + assert.Equal(s.T(), body, *result.Data.Attributes.Body) + assert.Equal(s.T(), expectedBody, *result.Data.Attributes.BodyRendered) +} + func (s *CommentsSuite) TestUpdateCommentWithoutAuth() { // given fxt := tf.NewTestFixture(s.T(), s.DB, tf.CreateWorkItemEnvironment(), tf.WorkItems(1)) diff --git a/controller/deployments.go b/controller/deployments.go index b32cc4fdad..f8a00e6fb1 100644 --- a/controller/deployments.go +++ b/controller/deployments.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "io" "net/url" "os" "time" @@ -21,6 +22,10 @@ import ( goauuid "github.com/goadesign/goa/uuid" 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. @@ -418,6 +423,142 @@ func (c *DeploymentsController) ShowAllEnvironments(ctx *app.ShowAllEnvironments 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 index e24c545668..e26f15c520 100644 --- a/controller/deployments_blackbox_test.go +++ b/controller/deployments_blackbox_test.go @@ -1,14 +1,26 @@ 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" @@ -538,7 +550,6 @@ func TestShowSpaceEnvironments(t *testing.T) { 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) { @@ -572,7 +583,6 @@ func TestShowSpaceEnvironments(t *testing.T) { assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) }) }) - } func TestShowAllEnvironments(t *testing.T) { @@ -666,3 +676,180 @@ func createOSIOClientMock(t minimock.Tester, spaceName string) *testcontroller.O } 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_urlprovider.go b/controller/deployments_urlprovider.go index fded9e35ef..cba02b6cf0 100644 --- a/controller/deployments_urlprovider.go +++ b/controller/deployments_urlprovider.go @@ -199,7 +199,7 @@ func (up *tenantURLProvider) GetEnvironmentMapping() map[string]string { log.Error(nil, map[string]interface{}{ "namespace": envNS, }, "namespace has no type") - } else if !isInternalNamespace(*envName) { + } else { result[*envName] = envNS } } @@ -207,15 +207,12 @@ func (up *tenantURLProvider) GetEnvironmentMapping() map[string]string { } // Types of namespaces where the user does not deploy applications -var internalNamespaceTypes = []string{"user", "che", "jenkins"} +var internalNamespaceTypes = map[string]struct{}{"user": {}, "che": {}, "jenkins": {}} -func isInternalNamespace(envType string) bool { - for _, internalType := range internalNamespaceTypes { - if envType == internalType { - return true - } - } - return false +// 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) { diff --git a/controller/deployments_urlprovider_test.go b/controller/deployments_urlprovider_test.go index cd20045fa8..99cd0c11c2 100644 --- a/controller/deployments_urlprovider_test.go +++ b/controller/deployments_urlprovider_test.go @@ -225,22 +225,31 @@ func TestTenantGetEnvironmentMapping(t *testing.T) { testName: "Basic", inputFile: "user-services.json", expectedMap: map[string]string{ - "run": "theuser-run", - "stage": "theuser-stage", + "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{ - "run": "theuser-run", + "user": "theuser", + "run": "theuser-run", + "che": "theuser-che", + "jenkins": "theuser-jenkins", }, }, { testName: "Empty Type", inputFile: "user-services-empty-type.json", expectedMap: map[string]string{ - "run": "theuser-run", + "user": "theuser", + "run": "theuser-run", + "che": "theuser-che", + "jenkins": "theuser-jenkins", }, }, } @@ -259,6 +268,29 @@ func TestTenantGetEnvironmentMapping(t *testing.T) { } } +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 { diff --git a/controller/test-files/event/list/ok-witype-change.res.headers.golden.json b/controller/test-files/event/list/ok-witype-change.res.headers.golden.json new file mode 100755 index 0000000000..305d7c10e7 --- /dev/null +++ b/controller/test-files/event/list/ok-witype-change.res.headers.golden.json @@ -0,0 +1,14 @@ +{ + "Cache-Control": [ + "max-age=2" + ], + "Content-Type": [ + "application/vnd.api+json" + ], + "Etag": [ + "1GmclFDDPcLR1ZWPZnykWw==" + ], + "Last-Modified": [ + "Mon, 01 Jan 0001 00:00:00 GMT" + ] +} \ No newline at end of file diff --git a/controller/test-files/event/list/ok-witype-change.res.payload.golden.json b/controller/test-files/event/list/ok-witype-change.res.payload.golden.json new file mode 100755 index 0000000000..a891fdba78 --- /dev/null +++ b/controller/test-files/event/list/ok-witype-change.res.payload.golden.json @@ -0,0 +1,49 @@ +{ + "data": [ + { + "attributes": { + "name": "workitemtype", + "timestamp": "0001-01-01T00:00:00Z" + }, + "id": "00000000-0000-0000-0000-000000000001", + "relationships": { + "modifier": { + "data": { + "id": "00000000-0000-0000-0000-000000000002", + "type": "users" + }, + "links": { + "related": "http:///api/users/00000000-0000-0000-0000-000000000002", + "self": "http:///api/users/00000000-0000-0000-0000-000000000002" + } + }, + "newValue": { + "data": [ + { + "id": "00000000-0000-0000-0000-000000000003", + "type": "workitemtypes" + } + ] + }, + "oldValue": { + "data": [ + { + "id": "00000000-0000-0000-0000-000000000004", + "type": "workitemtypes" + } + ] + }, + "workItemType": { + "data": { + "id": "00000000-0000-0000-0000-000000000003", + "type": "workitemtypes" + }, + "links": { + "self": "http:///api/workitemtypes/00000000-0000-0000-0000-000000000003" + } + } + }, + "type": "events" + } + ] +} \ No newline at end of file diff --git a/controller/test-files/work_item/update/workitem_type.res.payload.golden.json b/controller/test-files/work_item/update/workitem_type.res.payload.golden.json new file mode 100755 index 0000000000..58462c84e9 --- /dev/null +++ b/controller/test-files/work_item/update/workitem_type.res.payload.golden.json @@ -0,0 +1,95 @@ +{ + "data": { + "attributes": { + "bar": null, + "fooBar": "alpha", + "fooo": 2.5, + "integer-or-float-list": [], + "system.created_at": "0001-01-01T00:00:00Z", + "system.description": "```\nMissing fields in workitem type: Second WorkItem Type\n\nType1 Assigned To : First User (jon_doe), Second User (lorem_ipsum)\nType1 bar : hello\nType1 fooBar : open\nType1 integer-or-float-list : 101\nType1 reporter : First User (jon_doe)\n```\ndescription1\n", + "system.description.markup": "Markdown", + "system.description.rendered": "\u003cpre\u003e\u003ccode class=\"prettyprint\"\u003e\u003cspan class=\"typ\"\u003eMissing\u003c/span\u003e \u003cspan class=\"pln\"\u003efields\u003c/span\u003e \u003cspan class=\"kwd\"\u003ein\u003c/span\u003e \u003cspan class=\"pln\"\u003eworkitem\u003c/span\u003e \u003cspan class=\"kwd\"\u003etype\u003c/span\u003e\u003cspan class=\"pun\"\u003e:\u003c/span\u003e \u003cspan class=\"typ\"\u003eSecond\u003c/span\u003e \u003cspan class=\"typ\"\u003eWorkItem\u003c/span\u003e \u003cspan class=\"typ\"\u003eType\u003c/span\u003e\n\n\u003cspan class=\"typ\"\u003eType1\u003c/span\u003e \u003cspan class=\"typ\"\u003eAssigned\u003c/span\u003e \u003cspan class=\"typ\"\u003eTo\u003c/span\u003e \u003cspan class=\"pun\"\u003e:\u003c/span\u003e \u003cspan class=\"typ\"\u003eFirst\u003c/span\u003e \u003cspan class=\"typ\"\u003eUser\u003c/span\u003e \u003cspan class=\"pun\"\u003e(\u003c/span\u003e\u003cspan class=\"pln\"\u003ejon_doe\u003c/span\u003e\u003cspan class=\"pun\"\u003e)\u003c/span\u003e\u003cspan class=\"pun\"\u003e,\u003c/span\u003e \u003cspan class=\"typ\"\u003eSecond\u003c/span\u003e \u003cspan class=\"typ\"\u003eUser\u003c/span\u003e \u003cspan class=\"pun\"\u003e(\u003c/span\u003e\u003cspan class=\"pln\"\u003elorem_ipsum\u003c/span\u003e\u003cspan class=\"pun\"\u003e)\u003c/span\u003e\n\u003cspan class=\"typ\"\u003eType1\u003c/span\u003e \u003cspan class=\"pln\"\u003ebar\u003c/span\u003e \u003cspan class=\"pun\"\u003e:\u003c/span\u003e \u003cspan class=\"pln\"\u003ehello\u003c/span\u003e\n\u003cspan class=\"typ\"\u003eType1\u003c/span\u003e \u003cspan class=\"pln\"\u003efooBar\u003c/span\u003e \u003cspan class=\"pun\"\u003e:\u003c/span\u003e \u003cspan class=\"pln\"\u003eopen\u003c/span\u003e\n\u003cspan class=\"typ\"\u003eType1\u003c/span\u003e \u003cspan class=\"pln\"\u003einteger\u003c/span\u003e\u003cspan class=\"pun\"\u003e-\u003c/span\u003e\u003cspan class=\"kwd\"\u003eor\u003c/span\u003e\u003cspan class=\"pun\"\u003e-\u003c/span\u003e\u003cspan class=\"kwd\"\u003efloat\u003c/span\u003e\u003cspan class=\"pun\"\u003e-\u003c/span\u003e\u003cspan class=\"pln\"\u003elist\u003c/span\u003e \u003cspan class=\"pun\"\u003e:\u003c/span\u003e \u003cspan class=\"dec\"\u003e101\u003c/span\u003e\n\u003cspan class=\"typ\"\u003eType1\u003c/span\u003e \u003cspan class=\"pln\"\u003ereporter\u003c/span\u003e \u003cspan class=\"pun\"\u003e:\u003c/span\u003e \u003cspan class=\"typ\"\u003eFirst\u003c/span\u003e \u003cspan class=\"typ\"\u003eUser\u003c/span\u003e \u003cspan class=\"pun\"\u003e(\u003c/span\u003e\u003cspan class=\"pln\"\u003ejon_doe\u003c/span\u003e\u003cspan class=\"pun\"\u003e)\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003edescription1\u003c/p\u003e\n", + "system.metastate": null, + "system.number": 1, + "system.order": 1000, + "system.remote_item_id": null, + "system.state": "new", + "system.title": "work item 00000000-0000-0000-0000-000000000001", + "system.updated_at": "0001-01-01T00:00:00Z", + "version": 1 + }, + "id": "00000000-0000-0000-0000-000000000002", + "links": { + "related": "http:///api/workitems/00000000-0000-0000-0000-000000000002", + "self": "http:///api/workitems/00000000-0000-0000-0000-000000000002" + }, + "relationships": { + "area": {}, + "assignees": {}, + "baseType": { + "data": { + "id": "00000000-0000-0000-0000-000000000003", + "type": "workitemtypes" + }, + "links": { + "self": "http:///api/workitemtypes/00000000-0000-0000-0000-000000000003" + } + }, + "children": { + "links": { + "related": "http:///api/workitems/00000000-0000-0000-0000-000000000002/children" + }, + "meta": { + "hasChildren": false + } + }, + "comments": { + "links": { + "related": "http:///api/workitems/00000000-0000-0000-0000-000000000002/comments", + "self": "http:///api/workitems/00000000-0000-0000-0000-000000000002/relationships/comments" + } + }, + "creator": { + "data": { + "id": "00000000-0000-0000-0000-000000000004", + "type": "users" + }, + "links": { + "related": "http:///api/users/00000000-0000-0000-0000-000000000004", + "self": "http:///api/users/00000000-0000-0000-0000-000000000004" + } + }, + "events": { + "links": { + "related": "http:///api/workitems/00000000-0000-0000-0000-000000000002/events" + } + }, + "iteration": {}, + "labels": { + "links": { + "related": "http:///api/workitems/00000000-0000-0000-0000-000000000002/labels" + } + }, + "space": { + "data": { + "id": "00000000-0000-0000-0000-000000000005", + "type": "spaces" + }, + "links": { + "related": "http:///api/spaces/00000000-0000-0000-0000-000000000005", + "self": "http:///api/spaces/00000000-0000-0000-0000-000000000005" + } + }, + "system.boardcolumns": {}, + "workItemLinks": { + "links": { + "related": "http:///api/workitems/00000000-0000-0000-0000-000000000002/links" + } + } + }, + "type": "workitems" + }, + "links": { + "self": "http:///api/workitems/00000000-0000-0000-0000-000000000002" + } +} \ No newline at end of file diff --git a/controller/test-files/work_item_type/list/ok_agile.res.payload.golden.json b/controller/test-files/work_item_type/list/ok_agile.res.payload.golden.json index 6b38b806c8..fe2e8d95dd 100755 --- a/controller/test-files/work_item_type/list/ok_agile.res.payload.golden.json +++ b/controller/test-files/work_item_type/list/ok_agile.res.payload.golden.json @@ -416,6 +416,7 @@ "required": false, "type": { "baseType": "string", + "defaultValue": "P3 - Medium", "kind": "enum", "values": [ "P1 - Critical", @@ -458,6 +459,7 @@ "required": false, "type": { "baseType": "string", + "defaultValue": "SEV3 - Medium", "kind": "enum", "values": [ "SEV1 - Urgent", diff --git a/controller/test-files/work_item_type/list/ok_scrum.res.payload.golden.json b/controller/test-files/work_item_type/list/ok_scrum.res.payload.golden.json index d0800c6652..7cf3ef2de3 100755 --- a/controller/test-files/work_item_type/list/ok_scrum.res.payload.golden.json +++ b/controller/test-files/work_item_type/list/ok_scrum.res.payload.golden.json @@ -709,6 +709,7 @@ "required": false, "type": { "baseType": "string", + "defaultValue": "Medium", "kind": "enum", "values": [ "Critical", diff --git a/controller/work_item_events.go b/controller/work_item_events.go index e9c088aa83..7bd97761e6 100644 --- a/controller/work_item_events.go +++ b/controller/work_item_events.go @@ -81,11 +81,6 @@ func ConvertEvent(ctx context.Context, appl application.Application, req *http.R if err != nil { return nil, errs.Wrapf(err, "failed to load work item type: %s", wiEvent.WorkItemTypeID) } - fieldName := wiEvent.Name - fieldDef, ok := wit.Fields[fieldName] - if !ok { - return nil, errs.Errorf("failed to find field \"%s\" in work item type: %s (%s)", fieldName, wit.Name, wit.ID) - } modifierData, modifierLinks := ConvertUserSimple(req, wiEvent.Modifier) e := app.Event{ Type: event.APIStringTypeEvents, @@ -111,6 +106,40 @@ func ConvertEvent(ctx context.Context, appl application.Application, req *http.R }, } + if wiEvent.Name == event.WorkitemTypeChangeEvent { + oldTypeUUID, ok := wiEvent.Old.(uuid.UUID) + if !ok { + return nil, errs.Errorf("failed to convert old workitem type ID to UUID: %s", wiEvent.Old) + } + newTypeUUID, ok := wiEvent.New.(uuid.UUID) + if !ok { + return nil, errs.Errorf("failed to convert new workitem type ID to UUID: %s", wiEvent.New) + } + e.Relationships.OldValue = &app.RelationGenericList{ + Data: []*app.GenericData{ + { + ID: ptr.String(oldTypeUUID.String()), + Type: ptr.String(APIStringTypeWorkItemType), + }, + }, + } + e.Relationships.NewValue = &app.RelationGenericList{ + Data: []*app.GenericData{ + { + ID: ptr.String(newTypeUUID.String()), + Type: ptr.String(APIStringTypeWorkItemType), + }, + }, + } + return &e, nil + } + + fieldName := wiEvent.Name + fieldDef, ok := wit.Fields[fieldName] + if !ok { + return nil, errs.Errorf("failed to find field \"%s\" in work item type: %s (%s)", fieldName, wit.Name, wit.ID) + } + // convertVal returns the given value converted from storage space to // JSONAPI space. If the given value is supposed to be stored as a // relationship in JSONAPI, the second return value will be true. diff --git a/controller/work_item_events_test.go b/controller/work_item_events_test.go index 47112f4112..516d1e400e 100644 --- a/controller/work_item_events_test.go +++ b/controller/work_item_events_test.go @@ -600,4 +600,35 @@ func (s *TestEvent) TestListEvent() { // }) } }) + + s.T().Run("event list ok - workitem type change", func(t *testing.T) { + fxt := tf.NewTestFixture(t, s.DB, tf.CreateWorkItemEnvironment(), tf.WorkItems(1), tf.WorkItemTypes(2)) + svc := testsupport.ServiceAsSpaceUser("Event-Service", *fxt.Identities[0], &TestSpaceAuthzService{*fxt.Identities[0], ""}) + EventCtrl := NewEventsController(svc, s.GormDB, s.Configuration) + workitemCtrl := NewWorkitemController(svc, s.GormDB, s.Configuration) + payload := app.UpdateWorkitemPayload{ + Data: &app.WorkItem{ + Type: APIStringTypeWorkItem, + ID: &fxt.WorkItems[0].ID, + Attributes: map[string]interface{}{ + workitem.SystemVersion: fxt.WorkItems[0].Version, + }, + Relationships: &app.WorkItemRelationships{ + BaseType: &app.RelationBaseType{ + Data: &app.BaseTypeData{ + ID: fxt.WorkItemTypes[1].ID, + Type: APIStringTypeWorkItemType, + }, + }, + }, + }, + } + test.UpdateWorkitemOK(t, svc.Context, svc, workitemCtrl, fxt.WorkItems[0].ID, &payload) + res, eventList := test.ListWorkItemEventsOK(t, svc.Context, svc, EventCtrl, fxt.WorkItems[0].ID, nil, nil) + safeOverriteHeader(t, res, app.ETag, "1GmclFDDPcLR1ZWPZnykWw==") + require.NotEmpty(t, eventList) + require.Len(t, eventList.Data, 1) + compareWithGoldenAgnostic(t, filepath.Join(s.testDir, "list", "ok-witype-change.res.payload.golden.json"), eventList) + compareWithGoldenAgnostic(t, filepath.Join(s.testDir, "list", "ok-witype-change.res.headers.golden.json"), res.Header()) + }) } diff --git a/controller/workitem.go b/controller/workitem.go index d14e028345..88c2161ca6 100644 --- a/controller/workitem.go +++ b/controller/workitem.go @@ -71,6 +71,25 @@ func NewNotifyingWorkitemController(service *goa.Service, db application.DB, not config: config} } +// authorizeWorkitemTypeEditor returns true if the modifier is allowed to change +// workitem type else it returns false. +// Only space owner and workitem creator are allowed to change workitem type +func (c *WorkitemController) authorizeWorkitemTypeEditor(ctx context.Context, spaceID uuid.UUID, creatorID string, editorID string) (bool, error) { + // check if workitem editor is same as workitem creator + if editorID == creatorID { + return true, nil + } + space, err := c.db.Spaces().Load(ctx, spaceID) + if err != nil { + return false, errors.NewNotFoundError("space", spaceID.String()) + } + // check if workitem editor is same as space owner + if space != nil && editorID == space.OwnerID.String() { + return true, nil + } + return false, errors.NewUnauthorizedError("user is not allowed to change workitem type") +} + // Returns true if the user is the work item creator or space collaborator func authorizeWorkitemEditor(ctx context.Context, db application.DB, spaceID uuid.UUID, creatorID string, editorID string) (bool, error) { if editorID == creatorID { @@ -111,18 +130,48 @@ func (c *WorkitemController) Update(ctx *app.UpdateWorkitemContext) error { if !authorized { return jsonapi.JSONErrorResponse(ctx, errors.NewForbiddenError("user is not authorized to access the space")) } + + if ctx.Payload.Data.Relationships != nil && ctx.Payload.Data.Relationships.BaseType != nil && + ctx.Payload.Data.Relationships.BaseType.Data != nil && ctx.Payload.Data.Relationships.BaseType.Data.ID != wi.Type { + + authorized, err := c.authorizeWorkitemTypeEditor(ctx, wi.SpaceID, creator.(string), currentUserIdentityID.String()) + if err != nil { + return jsonapi.JSONErrorResponse(ctx, err) + } + if !authorized { + return jsonapi.JSONErrorResponse(ctx, errors.NewForbiddenError("user is not authorized to change the workitemtype")) + } + // Store new values of type and version + newType := ctx.Payload.Data.Relationships.BaseType + newVersion := ctx.Payload.Data.Attributes[workitem.SystemVersion] + + // Remove version and base type from payload + delete(ctx.Payload.Data.Attributes, workitem.SystemVersion) + ctx.Payload.Data.Relationships.BaseType = nil + + // Ensure we do not have any other change in payload except type change + if (app.WorkItemRelationships{}) != *ctx.Payload.Data.Relationships || len(ctx.Payload.Data.Attributes) > 0 { + // Todo(ibrahim) - Change this error to 422 Unprocessable entity + // error once we have this error in our error package. Please see + // https://github.com/fabric8-services/fabric8-wit/pull/2202#discussion_r208842063 + return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterErrorFromString("cannot update type along with other fields")) + } + + // Restore the original values + ctx.Payload.Data.Relationships.BaseType = newType + ctx.Payload.Data.Attributes[workitem.SystemVersion] = newVersion + + } err = application.Transactional(c.db, func(appl application.Application) error { - // The Number and Type of a work item are not allowed to be changed - // which is why we overwrite those values with their old value after the - // work item was converted. + // The Number of a work item is not allowed to be changed which is why + // we overwrite the values with its old value after the work item was + // converted. oldNumber := wi.Number - oldType := wi.Type err = ConvertJSONAPIToWorkItem(ctx, ctx.Method, appl, *ctx.Payload.Data, wi, wi.Type, wi.SpaceID) if err != nil { return err } wi.Number = oldNumber - wi.Type = oldType wi, err = appl.WorkItems().Save(ctx, wi.SpaceID, *wi, *currentUserIdentityID) if err != nil { return errs.Wrap(err, "Error updating work item") diff --git a/controller/workitem_blackbox_test.go b/controller/workitem_blackbox_test.go index 3ca62f4198..7b7f57e3e2 100644 --- a/controller/workitem_blackbox_test.go +++ b/controller/workitem_blackbox_test.go @@ -947,7 +947,7 @@ func (s *WorkItem2Suite) TestWI2UpdateWithNonExistentID() { func (s *WorkItem2Suite) TestWI2UpdateSetReadOnlyFields() { // given - fxt := tf.NewTestFixture(s.T(), s.DB, tf.CreateWorkItemEnvironment(), tf.WorkItems(1), tf.WorkItemTypes(2)) + fxt := tf.NewTestFixture(s.T(), s.DB, tf.CreateWorkItemEnvironment(), tf.WorkItems(1), tf.WorkItemTypes(1)) u := minimumRequiredUpdatePayload() u.Data.Attributes[workitem.SystemTitle] = "Test title" @@ -955,7 +955,7 @@ func (s *WorkItem2Suite) TestWI2UpdateSetReadOnlyFields() { u.Data.Attributes[workitem.SystemNumber] = fxt.WorkItems[0].Number + 666 u.Data.ID = &fxt.WorkItems[0].ID u.Data.Relationships = &app.WorkItemRelationships{ - BaseType: newRelationBaseType(fxt.WorkItemTypes[1].ID), + BaseType: newRelationBaseType(fxt.WorkItemTypes[0].ID), } // when @@ -969,6 +969,139 @@ func (s *WorkItem2Suite) TestWI2UpdateSetReadOnlyFields() { }) } +func (s *WorkItem2Suite) TestWI2UpdateWorkItemType() { + userFullName := []string{"First User", "Second User"} + userUserName := []string{"jon_doe", "lorem_ipsum"} + fxt := tf.NewTestFixture(s.T(), s.DB, + tf.CreateWorkItemEnvironment(), + tf.Users(2, func(fxt *tf.TestFixture, idx int) error { + fxt.Users[idx].FullName = userFullName[idx] + return nil + }), + tf.Identities(2, func(fxt *tf.TestFixture, idx int) error { + fxt.Identities[idx].Username = userUserName[idx] + fxt.Identities[idx].User = *fxt.Users[idx] + return nil + }), + tf.WorkItemTypes(2, func(fxt *tf.TestFixture, idx int) error { + switch idx { + case 0: + fxt.WorkItemTypes[idx].Name = "First WorkItem Type" + fxt.WorkItemTypes[idx].Fields = map[string]workitem.FieldDefinition{ + "fooo": { + Label: "Type1 fooo", + Type: &workitem.SimpleType{Kind: workitem.KindFloat}, + }, + "fooBar": { + Label: "Type1 fooBar", + Type: workitem.EnumType{ + BaseType: workitem.SimpleType{Kind: workitem.KindString}, + SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, + Values: []interface{}{"open", "done", "closed"}, + }, + }, + "assigned-to": { + Label: "Type1 Assigned To", + Type: workitem.ListType{ + SimpleType: workitem.SimpleType{Kind: workitem.KindList}, + ComponentType: workitem.SimpleType{Kind: workitem.KindUser}, + }, + }, + "bar": { + Label: "Type1 bar", + Type: &workitem.SimpleType{Kind: workitem.KindString}, + }, + "reporter": { + Label: "Type1 reporter", + Type: &workitem.SimpleType{Kind: workitem.KindUser}, + }, + "integer-or-float-list": { + Label: "Type1 integer-or-float-list", + Type: workitem.ListType{ + SimpleType: workitem.SimpleType{Kind: workitem.KindList}, + ComponentType: workitem.SimpleType{Kind: workitem.KindInteger}, + }, + }, + } + case 1: + fxt.WorkItemTypes[idx].Name = "Second WorkItem Type" + fxt.WorkItemTypes[idx].Fields = map[string]workitem.FieldDefinition{ + "fooo": { + Label: "Type2 fooo", + Type: &workitem.SimpleType{Kind: workitem.KindFloat}, + }, + "bar": { + Label: "Type2 bar", + Type: &workitem.SimpleType{Kind: workitem.KindInteger}, + }, + "fooBar": { + Label: "Type2 fooBar", + Type: workitem.EnumType{ + BaseType: workitem.SimpleType{Kind: workitem.KindString}, + SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, + Values: []interface{}{"alpha", "beta", "gamma"}, + }, + }, + "integer-or-float-list": { + Label: "Type2 integer-or-float-list", + Type: workitem.ListType{ + SimpleType: workitem.SimpleType{Kind: workitem.KindList}, + ComponentType: workitem.SimpleType{Kind: workitem.KindFloat}, + }, + }, + } + } + return nil + }), + tf.WorkItems(1, func(fxt *tf.TestFixture, idx int) error { + fxt.WorkItems[idx].Type = fxt.WorkItemTypes[0].ID + fxt.WorkItems[idx].Fields["integer-or-float-list"] = []int{101} + fxt.WorkItems[idx].Fields["fooo"] = 2.5 + fxt.WorkItems[idx].Fields["fooBar"] = "open" + fxt.WorkItems[idx].Fields["bar"] = "hello" + fxt.WorkItems[idx].Fields["reporter"] = fxt.Identities[0].ID.String() + fxt.WorkItems[idx].Fields["assigned-to"] = []string{fxt.Identities[0].ID.String(), fxt.Identities[1].ID.String()} + fxt.WorkItems[idx].Fields[workitem.SystemDescription] = rendering.NewMarkupContentFromLegacy("description1") + return nil + }), + ) + // when + u := minimumRequiredUpdatePayload() + u.Data.Attributes[workitem.SystemVersion] = fxt.WorkItems[0].Version + u.Data.ID = &fxt.WorkItems[0].ID + u.Data.Relationships = &app.WorkItemRelationships{ + BaseType: newRelationBaseType(fxt.WorkItemTypes[1].ID), + } + svc := testsupport.ServiceAsUser("TypeChangeService", *fxt.Identities[0]) + s.T().Run("ok", func(t *testing.T) { + _, newWI := test.UpdateWorkitemOK(t, svc.Context, svc, s.workitemCtrl, fxt.WorkItems[0].ID, &u) + + assert.Equal(t, fxt.WorkItemTypes[1].ID, newWI.Data.Relationships.BaseType.Data.ID) + newDescription := newWI.Data.Attributes[workitem.SystemDescription] + assert.NotNil(t, newDescription) + // Type of old and new field is same + assert.NotContains(t, newDescription, fxt.WorkItemTypes[0].Fields["fooo"].Label) + assert.Contains(t, newDescription, fxt.WorkItemTypes[0].Fields["bar"].Label) + assert.Contains(t, newDescription, fxt.WorkItemTypes[0].Fields["fooBar"].Label) + assert.Equal(t, "alpha", newWI.Data.Attributes["fooBar"]) // First value of enum for field foobar + compareWithGoldenAgnostic(t, filepath.Join(s.testDir, "update", "workitem_type.res.payload.golden.json"), newWI) + }) + + s.T().Run("disallow update of field along with type", func(t *testing.T) { + u.Data.Attributes[workitem.SystemTitle] = "xyz" + // TODO (ibrahim) - Check type of error once error 422 has been added. + //https://github.com/fabric8-services/fabric8-wit/pull/2202#discussion_r210184092 + test.UpdateWorkitemConflict(t, svc.Context, svc, s.workitemCtrl, fxt.WorkItems[0].ID, &u) + }) + + s.T().Run("unauthorized", func(t *testing.T) { + // Only Space owner and workitem creator is allowed to change type + svcNotAuthorized := testsupport.ServiceAsSpaceUser("TypeChange-Service", *fxt.Identities[1], &TestSpaceAuthzService{*fxt.Identities[0], ""}) + workitemCtrlNotAuthorized := NewWorkitemController(svcNotAuthorized, s.GormDB, s.Configuration) + test.UpdateWorkitemForbidden(t, svcNotAuthorized.Context, svcNotAuthorized, workitemCtrlNotAuthorized, fxt.WorkItems[0].ID, &u) + }) +} + func (s *WorkItem2Suite) TestWI2UpdateFieldOfDifferentSimpleTypes() { s.T().Run("field types", func(t *testing.T) { vals := workitem.GetFieldTypeTestData(t) diff --git a/controller/workitemtype.go b/controller/workitemtype.go index 13514c0b2d..1f6bc12de4 100644 --- a/controller/workitemtype.go +++ b/controller/workitemtype.go @@ -101,16 +101,26 @@ func ConvertWorkItemTypeFromModel(request *http.Request, t *workitem.WorkItemTyp return converted } -// converts the field type from modesl to app representation +// converts the field type from model to app representation func ConvertFieldTypeFromModel(t workitem.FieldType) app.FieldType { result := app.FieldType{} result.Kind = string(t.GetKind()) - switch t2 := t.(type) { + switch modelFieldType := t.(type) { case workitem.ListType: - result.ComponentType = ptr.String(string(t2.ComponentType.GetKind())) + result.ComponentType = ptr.String(string(modelFieldType.ComponentType.GetKind())) + if modelFieldType.DefaultValue != nil { + result.DefaultValue = &modelFieldType.DefaultValue + } case workitem.EnumType: - result.BaseType = ptr.String(string(t2.BaseType.GetKind())) - result.Values = t2.Values + result.BaseType = ptr.String(string(modelFieldType.BaseType.GetKind())) + result.Values = modelFieldType.Values + if modelFieldType.DefaultValue != nil { + result.DefaultValue = &modelFieldType.DefaultValue + } + case workitem.SimpleType: + if modelFieldType.DefaultValue != nil { + result.DefaultValue = &modelFieldType.DefaultValue + } } return result @@ -130,7 +140,19 @@ func ConvertFieldTypeToModel(t app.FieldType) (workitem.FieldType, error) { if !componentType.IsSimpleType() { return nil, fmt.Errorf("Component type is not list type: %T", componentType) } - return workitem.ListType{workitem.SimpleType{*kind}, workitem.SimpleType{*componentType}}, nil + listType := workitem.ListType{ + SimpleType: workitem.SimpleType{Kind: *kind}, + ComponentType: workitem.SimpleType{Kind: *componentType}, + } + // convert list default value from app to model + if t.DefaultValue != nil { + fieldType, err := listType.SetDefaultValue(*t.DefaultValue) + if err != nil { + return nil, errs.Wrapf(err, "failed to convert default list value: %+v", *t.DefaultValue) + } + return fieldType, nil + } + return listType, nil case workitem.KindEnum: bt, err := workitem.ConvertAnyToKind(*t.BaseType) if err != nil { @@ -139,8 +161,9 @@ func ConvertFieldTypeToModel(t app.FieldType) (workitem.FieldType, error) { if !bt.IsSimpleType() { return nil, fmt.Errorf("baseType type is not list type: %T", bt) } - baseType := workitem.SimpleType{*bt} + baseType := workitem.SimpleType{Kind: *bt} + // convert enum values from app to model values := t.Values converted, err := workitem.ConvertList(func(ft workitem.FieldType, element interface{}) (interface{}, error) { return ft.ConvertToModel(element) @@ -148,15 +171,34 @@ func ConvertFieldTypeToModel(t app.FieldType) (workitem.FieldType, error) { if err != nil { return nil, errs.WithStack(err) } - return workitem.EnumType{ // TODO(kwk): handle RewritableValues here? + + enumType := workitem.EnumType{ // TODO(kwk): handle RewritableValues here? SimpleType: workitem.SimpleType{ Kind: *kind, }, BaseType: baseType, Values: converted, - }, nil + } + // convert enum default value from app to model + if t.DefaultValue != nil { + fieldType, err := enumType.SetDefaultValue(*t.DefaultValue) + if err != nil { + return nil, errs.Wrapf(err, "failed to convert default enum value: %+v", *t.DefaultValue) + } + return fieldType, nil + } + return enumType, nil default: - return workitem.SimpleType{*kind}, nil + simpleType := workitem.SimpleType{Kind: *kind} + // convert simple type default value from app to model + if t.DefaultValue != nil { + fieldType, err := simpleType.SetDefaultValue(*t.DefaultValue) + if err != nil { + return nil, errs.Wrapf(err, "failed to convert default simple type value: %+v", *t.DefaultValue) + } + return fieldType, nil + } + return simpleType, nil } } diff --git a/design/api.go b/design/api.go index c80d3c33d0..f9294f81d3 100644 --- a/design/api.go +++ b/design/api.go @@ -49,6 +49,12 @@ var _ = a.API("wit", func() { a.Header("Authorization") }) + a.JWTSecurity("jwt-query-param", func() { + a.Description("JWT Token Query Parameter Auth") + a.TokenURL("/api/login/authorize") + a.Query("access_token") + }) + a.ResponseTemplate(d.OK, func() { a.Description("Resource created") a.Status(200) diff --git a/design/deployments.go b/design/deployments.go index 8c322dbbcc..08ef85904c 100644 --- a/design/deployments.go +++ b/design/deployments.go @@ -299,4 +299,18 @@ var _ = a.Resource("deployments", func() { 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/workitemtype.go b/design/workitemtype.go index 092cb77856..7095dd6aca 100644 --- a/design/workitemtype.go +++ b/design/workitemtype.go @@ -12,7 +12,7 @@ var fieldType = a.Type("fieldType", func() { a.Attribute("componentType", d.String, "The kind of type of the individual elements for a list type. Required for list types. Must be a simple type, not enum or list") a.Attribute("baseType", d.String, "The kind of type of the enumeration values for an enum type. Required for enum types. Must be a simple type, not enum or list") a.Attribute("values", a.ArrayOf(d.Any), "The possible values for an enum type. The values must be of a type convertible to the base type") - + a.Attribute("defaultValue", d.Any, "Optional default value (if any)") a.Required("kind") }) diff --git a/goamiddleware/jwt_middleware.go b/goamiddleware/jwt_middleware.go new file mode 100644 index 0000000000..d1bc9212ee --- /dev/null +++ b/goamiddleware/jwt_middleware.go @@ -0,0 +1,149 @@ +// The MIT License (MIT) + +// Copyright (c) 2015 Raphael Simon and goa Contributors + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package goamiddleware + +import ( + "crypto/rsa" + "fmt" + "net/http" + + "context" + + jwt "github.com/dgrijalva/jwt-go" + "github.com/goadesign/goa" + goajwt "github.com/goadesign/goa/middleware/security/jwt" +) + +// New returns a middleware to be used with the JWTSecurity DSL definitions of goa. It supports the +// scopes claim in the JWT and ensures goa-defined Security DSLs are properly validated. +// +// The steps taken by the middleware are: +// +// 1. Extract the "Bearer" token from the Authorization header or query parameter +// 2. Validate the "Bearer" token against the key(s) +// given to New +// 3. If scopes are defined in the design for the action, validate them +// against the scopes presented by the JWT in the claim "scope", or if +// that's not defined, "scopes". +// +// The `exp` (expiration) and `nbf` (not before) date checks are validated by the JWT library. +// +// validationKeys can be one of these: +// +// * a string (for HMAC) +// * a []byte (for HMAC) +// * an rsa.PublicKey +// * an ecdsa.PublicKey +// * a slice of any of the above +// +// The type of the keys determine the algorithm that will be used to do the check. The goal of +// having lists of keys is to allow for key rotation, still check the previous keys until rotation +// has been completed. +// +// You can define an optional function to do additional validations on the token once the signature +// and the claims requirements are proven to be valid. Example: +// +// validationHandler, _ := goa.NewMiddleware(func(ctx context.Context, w http.ResponseWriter, r *http.Request) error { +// token := jwt.ContextJWT(ctx) +// if val, ok := token.Claims["is_uncle"].(string); !ok || val != "ben" { +// return jwt.ErrJWTError("you are not uncle ben's") +// } +// }) +// +// Mount the middleware with the generated UseXX function where XX is the name of the scheme as +// defined in the design, e.g.: +// +// app.UseJWT(jwt.New("secret", validationHandler, app.NewJWTSecurity())) +// +func New(validationKeys interface{}, validationFunc goa.Middleware, scheme *goa.JWTSecurity) goa.Middleware { + var rsaKeys []*rsa.PublicKey + var hmacKeys [][]byte + + rsaKeys, ecdsaKeys, hmacKeys := partitionKeys(validationKeys) + + return func(nextHandler goa.Handler) goa.Handler { + return func(ctx context.Context, rw http.ResponseWriter, req *http.Request) error { + var ( + incomingToken string + err error + ) + + if scheme.In == goa.LocHeader { + if incomingToken, err = extractTokenFromHeader(scheme.Name, req); err != nil { + return err + } + } else if scheme.In == goa.LocQuery { + if incomingToken, err = extractTokenFromQueryParam(scheme.Name, req); err != nil { + return err + } + } else { + return fmt.Errorf("whoops, security scheme with location (in) %q not supported", scheme.In) + } + + var ( + token *jwt.Token + validated = false + ) + + if len(rsaKeys) > 0 { + token, err = validateRSAKeys(rsaKeys, "RS", incomingToken) + validated = err == nil + } + + if !validated && len(ecdsaKeys) > 0 { + token, err = validateECDSAKeys(ecdsaKeys, "ES", incomingToken) + validated = err == nil + } + + if !validated && len(hmacKeys) > 0 { + token, err = validateHMACKeys(hmacKeys, "HS", incomingToken) + //validated = err == nil + } + + if err != nil { + return goajwt.ErrJWTError(fmt.Sprintf("JWT validation failed: %s", err)) + } + + scopesInClaim, scopesInClaimList, err := parseClaimScopes(token) + if err != nil { + goa.LogError(ctx, err.Error()) + return goajwt.ErrJWTError(err) + } + + requiredScopes := goa.ContextRequiredScopes(ctx) + + for _, scope := range requiredScopes { + if !scopesInClaim[scope] { + msg := "authorization failed: required 'scope' or 'scopes' not present in JWT claim" + return goajwt.ErrJWTError(msg, "required", requiredScopes, "scopes", scopesInClaimList) + } + } + + ctx = goajwt.WithJWT(ctx, token) + if validationFunc != nil { + nextHandler = validationFunc(nextHandler) + } + return nextHandler(ctx, rw, req) + } + } +} diff --git a/goamiddleware/jwt_shared.go b/goamiddleware/jwt_shared.go new file mode 100644 index 0000000000..1ccc01f0a1 --- /dev/null +++ b/goamiddleware/jwt_shared.go @@ -0,0 +1,179 @@ +// The MIT License (MIT) + +// Copyright (c) 2015 Raphael Simon and goa Contributors + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package goamiddleware + +import ( + "crypto/ecdsa" + "crypto/rsa" + "fmt" + "net/http" + "sort" + "strings" + + jwt "github.com/dgrijalva/jwt-go" + goajwt "github.com/goadesign/goa/middleware/security/jwt" +) + +func extractTokenFromHeader(schemeName string, req *http.Request) (string, error) { + val := req.Header.Get(schemeName) + if val == "" { + return "", goajwt.ErrJWTError(fmt.Sprintf("missing header %q", schemeName)) + } + + if !strings.HasPrefix(strings.ToLower(val), "bearer ") { + return "", goajwt.ErrJWTError(fmt.Sprintf("invalid or malformed %q header, expected 'Bearer JWT-token...'", val)) + } + + incomingToken := strings.Split(val, " ")[1] + + return incomingToken, nil +} + +func extractTokenFromQueryParam(schemeName string, req *http.Request) (string, error) { + incomingToken := req.URL.Query().Get(schemeName) + if incomingToken == "" { + return "", goajwt.ErrJWTError(fmt.Sprintf("missing parameter %q", schemeName)) + } + + return incomingToken, nil +} + +// validScopeClaimKeys are the claims under which scopes may be found in a token +var validScopeClaimKeys = []string{"scope", "scopes"} + +// parseClaimScopes parses the "scope" or "scopes" parameter in the Claims. It +// supports two formats: +// +// * a list of strings +// +// * a single string with space-separated scopes (akin to OAuth2's "scope"). +// +// An empty string is an explicit claim of no scopes. +func parseClaimScopes(token *jwt.Token) (map[string]bool, []string, error) { + scopesInClaim := make(map[string]bool) + var scopesInClaimList []string + claims, ok := token.Claims.(jwt.MapClaims) + if !ok { + return nil, nil, fmt.Errorf("unsupport claims shape") + } + for _, k := range validScopeClaimKeys { + if rawscopes, ok := claims[k]; ok && rawscopes != nil { + switch scopes := rawscopes.(type) { + case string: + for _, scope := range strings.Split(scopes, " ") { + scopesInClaim[scope] = true + scopesInClaimList = append(scopesInClaimList, scope) + } + case []interface{}: + for _, scope := range scopes { + if val, ok := scope.(string); ok { + scopesInClaim[val] = true + scopesInClaimList = append(scopesInClaimList, val) + } + } + default: + return nil, nil, fmt.Errorf("unsupported scope format in incoming JWT claim, was type %T", scopes) + } + break + } + } + sort.Strings(scopesInClaimList) + return scopesInClaim, scopesInClaimList, nil +} + +// partitionKeys sorts keys by their type. +func partitionKeys(k interface{}) ([]*rsa.PublicKey, []*ecdsa.PublicKey, [][]byte) { + var ( + rsaKeys []*rsa.PublicKey + ecdsaKeys []*ecdsa.PublicKey + hmacKeys [][]byte + ) + + switch typed := k.(type) { + case []byte: + hmacKeys = append(hmacKeys, typed) + case [][]byte: + hmacKeys = typed + case string: + hmacKeys = append(hmacKeys, []byte(typed)) + case []string: + for _, s := range typed { + hmacKeys = append(hmacKeys, []byte(s)) + } + case *rsa.PublicKey: + rsaKeys = append(rsaKeys, typed) + case []*rsa.PublicKey: + rsaKeys = typed + case *ecdsa.PublicKey: + ecdsaKeys = append(ecdsaKeys, typed) + case []*ecdsa.PublicKey: + ecdsaKeys = typed + } + + return rsaKeys, ecdsaKeys, hmacKeys +} + +func validateRSAKeys(rsaKeys []*rsa.PublicKey, algo, incomingToken string) (token *jwt.Token, err error) { + for _, pubkey := range rsaKeys { + token, err = jwt.Parse(incomingToken, func(token *jwt.Token) (interface{}, error) { + if !strings.HasPrefix(token.Method.Alg(), algo) { + return nil, goajwt.ErrJWTError(fmt.Sprintf("Unexpected signing method: %v", token.Header["alg"])) + } + return pubkey, nil + }) + if err == nil { + return + } + } + return +} + +func validateECDSAKeys(ecdsaKeys []*ecdsa.PublicKey, algo, incomingToken string) (token *jwt.Token, err error) { + for _, pubkey := range ecdsaKeys { + token, err = jwt.Parse(incomingToken, func(token *jwt.Token) (interface{}, error) { + if !strings.HasPrefix(token.Method.Alg(), algo) { + return nil, goajwt.ErrJWTError(fmt.Sprintf("Unexpected signing method: %v", token.Header["alg"])) + } + return pubkey, nil + }) + if err == nil { + return + } + } + return +} + +func validateHMACKeys(hmacKeys [][]byte, algo, incomingToken string) (token *jwt.Token, err error) { + for _, key := range hmacKeys { + token, err = jwt.Parse(incomingToken, func(token *jwt.Token) (interface{}, error) { + if !strings.HasPrefix(token.Method.Alg(), algo) { + return nil, goajwt.ErrJWTError(fmt.Sprintf("Unexpected signing method: %v", token.Header["alg"])) + } + return key, nil + }) + if err == nil { + return + } + } + return +} diff --git a/goamiddleware/jwt_token_context.go b/goamiddleware/jwt_token_context.go index 7130bd451a..5091e388c7 100644 --- a/goamiddleware/jwt_token_context.go +++ b/goamiddleware/jwt_token_context.go @@ -1,7 +1,28 @@ +// The MIT License (MIT) + +// Copyright (c) 2015 Raphael Simon and goa Contributors + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + package goamiddleware import ( - "crypto/ecdsa" "crypto/rsa" "fmt" "net/http" @@ -45,21 +66,21 @@ func TokenContext(validationKeys interface{}, validationFunc goa.Middleware, sch ) if len(rsaKeys) > 0 { - token, err = parseRSAKeys(rsaKeys, "RS", incomingToken) + token, err = validateRSAKeys(rsaKeys, "RS", incomingToken) if err == nil { parsed = true } } if !parsed && len(ecdsaKeys) > 0 { - token, err = parseECDSAKeys(ecdsaKeys, "ES", incomingToken) + token, err = validateECDSAKeys(ecdsaKeys, "ES", incomingToken) if err == nil { parsed = true } } if !parsed && len(hmacKeys) > 0 { - token, err = parseHMACKeys(hmacKeys, "HS", incomingToken) + token, err = validateHMACKeys(hmacKeys, "HS", incomingToken) if err == nil { parsed = true } @@ -76,80 +97,3 @@ func TokenContext(validationKeys interface{}, validationFunc goa.Middleware, sch } } } - -// partitionKeys sorts keys by their type. -func partitionKeys(k interface{}) ([]*rsa.PublicKey, []*ecdsa.PublicKey, [][]byte) { - var ( - rsaKeys []*rsa.PublicKey - ecdsaKeys []*ecdsa.PublicKey - hmacKeys [][]byte - ) - - switch typed := k.(type) { - case []byte: - hmacKeys = append(hmacKeys, typed) - case [][]byte: - hmacKeys = typed - case string: - hmacKeys = append(hmacKeys, []byte(typed)) - case []string: - for _, s := range typed { - hmacKeys = append(hmacKeys, []byte(s)) - } - case *rsa.PublicKey: - rsaKeys = append(rsaKeys, typed) - case []*rsa.PublicKey: - rsaKeys = typed - case *ecdsa.PublicKey: - ecdsaKeys = append(ecdsaKeys, typed) - case []*ecdsa.PublicKey: - ecdsaKeys = typed - } - - return rsaKeys, ecdsaKeys, hmacKeys -} - -func parseRSAKeys(rsaKeys []*rsa.PublicKey, algo, incomingToken string) (token *jwt.Token, err error) { - for _, pubkey := range rsaKeys { - token, err = jwt.Parse(incomingToken, func(token *jwt.Token) (interface{}, error) { - if !strings.HasPrefix(token.Method.Alg(), algo) { - return nil, goajwt.ErrJWTError(fmt.Sprintf("unexpected signing method: %v", token.Header["alg"])) - } - return pubkey, nil - }) - if err == nil { - return - } - } - return -} - -func parseECDSAKeys(ecdsaKeys []*ecdsa.PublicKey, algo, incomingToken string) (token *jwt.Token, err error) { - for _, pubkey := range ecdsaKeys { - token, err = jwt.Parse(incomingToken, func(token *jwt.Token) (interface{}, error) { - if !strings.HasPrefix(token.Method.Alg(), algo) { - return nil, goajwt.ErrJWTError(fmt.Sprintf("unexpected signing method: %v", token.Header["alg"])) - } - return pubkey, nil - }) - if err == nil { - return - } - } - return -} - -func parseHMACKeys(hmacKeys [][]byte, algo, incomingToken string) (token *jwt.Token, err error) { - for _, key := range hmacKeys { - token, err = jwt.Parse(incomingToken, func(token *jwt.Token) (interface{}, error) { - if !strings.HasPrefix(token.Method.Alg(), algo) { - return nil, goajwt.ErrJWTError(fmt.Sprintf("unexpected signing method: %v", token.Header["alg"])) - } - return key, nil - }) - if err == nil { - return - } - } - return -} diff --git a/id/slice.go b/id/slice.go index a886297c4e..eb4200323d 100644 --- a/id/slice.go +++ b/id/slice.go @@ -105,6 +105,17 @@ func (s Slice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } +// Contains returns true if the slice contains the given ID; otherwise false is +// returned. +func (s Slice) Contains(v uuid.UUID) bool { + for _, i := range s { + if i == v { + return true + } + } + return false +} + // Ensure Slice implements the sort.Interface var _ sort.Interface = Slice{} var _ sort.Interface = (*Slice)(nil) diff --git a/id/slice_blackbox_test.go b/id/slice_blackbox_test.go index 65730f1aae..4bd26d151d 100644 --- a/id/slice_blackbox_test.go +++ b/id/slice_blackbox_test.go @@ -178,3 +178,11 @@ func TestToStringSlice(t *testing.T) { s := id.Slice{a, b, c} require.Equal(t, []string{a.String(), b.String(), c.String()}, s.ToStringSlice()) } + +func TestSlice_Contains(t *testing.T) { + a := uuid.FromStringOrNil("cb4364bf-893c-4ac2-a35f-4ef74c212e88") + b := uuid.FromStringOrNil("d085a858-6b98-44ce-8777-b36d927b07dc") + require.True(t, id.Slice{a, b}.Contains(a)) + require.False(t, id.Slice{}.Contains(a)) + require.False(t, id.Slice{a}.Contains(b)) +} diff --git a/jstconfig-pp.yaml b/jstconfig-pp.yaml new file mode 100644 index 0000000000..9621c17e50 --- /dev/null +++ b/jstconfig-pp.yaml @@ -0,0 +1,10 @@ +# Auth service URL +aaauth.url : https://auth.openshift.io +auth.url : https://auth.prod-preview.openshift.io +xxauth.url : http://localhost:8089 + +# Openshift Proxy URL +osoproxy.url : https://f8osoproxy-test-dsaas-preview.b6ff.rh-idev.openshiftapps.com + +# enable tenant service +xxxtenant.serviceurl : http://localhost:8080 \ No newline at end of file diff --git a/jstconfig-prod.yaml b/jstconfig-prod.yaml new file mode 100644 index 0000000000..6788aa9b1d --- /dev/null +++ b/jstconfig-prod.yaml @@ -0,0 +1,16 @@ +auth.url : https://auth.openshift.io + +# enable tenant service +xxxtenant.serviceurl : http://localhost:8080 + + +# Openshift Proxy URL +osoproxy.url : https://f8osoproxy-test-dsaas-production.09b5.dsaas.openshiftapps.com +## prod-preview osproxy.url : https://f8osoproxy-test-dsaas-preview.b6ff.rh-idev.openshiftapps.com + +#diagnose.http.address : 127.0.0.1:9088 + +#metrics.http.address : localhost:9090 + + +log.level: info diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go new file mode 100644 index 0000000000..96f695e473 --- /dev/null +++ b/kubernetes/deployments_access.go @@ -0,0 +1,388 @@ +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 new file mode 100644 index 0000000000..46b6b720b8 --- /dev/null +++ b/kubernetes/deployments_access_blackbox_test.go @@ -0,0 +1,458 @@ +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 index 19379d9b4d..682b871fe9 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -15,10 +15,13 @@ import ( 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" @@ -76,7 +79,9 @@ type KubeClientInterface interface { GetEnvironments() ([]*app.SimpleEnvironment, error) GetEnvironment(envName string) (*app.SimpleEnvironment, error) GetMetricsClient(envNS string) (Metrics, error) + WatchEventsInNamespace(nameSpace string) (*cache.FIFO, chan struct{}) Close() + KubeAccessControl } type kubeClient struct { @@ -85,6 +90,7 @@ type kubeClient struct { BaseURLProvider KubeRESTAPI metricsMap map[string]Metrics + rulesMap map[string]*accessRules OpenShiftRESTAPI MetricsGetter } @@ -104,11 +110,12 @@ 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) 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{}) 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) 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 { @@ -139,6 +146,7 @@ type route struct { // 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) @@ -187,6 +195,7 @@ func NewKubeClient(config *KubeClientConfig) (KubeClientInterface, error) { KubeRESTAPI: kubeAPI, OpenShiftRESTAPI: osAPI, metricsMap: make(map[string]Metrics), + rulesMap: make(map[string]*accessRules), MetricsGetter: config.MetricsGetter, } @@ -309,11 +318,14 @@ func (kc *kubeClient) GetApplication(spaceName string, appName string) (*app.Sim // Get all deployments of this app for each environment in this space deployments := []*app.SimpleDeployment{} for envName := range kc.envMap { - deployment, err := kc.GetDeployment(spaceName, appName, envName) - if err != nil { - return nil, err - } else if deployment != nil { - deployments = append(deployments, deployment) + // 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) + } } } @@ -331,7 +343,7 @@ func (kc *kubeClient) GetApplication(spaceName string, appName string) (*app.Sim // 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.getEnvironmentNamespace(envName) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -371,7 +383,7 @@ func (kc *kubeClient) ScaleDeployment(spaceName string, appName string, envName } spec["replicas"] = deployNumber - err = kc.SetDeploymentConfigScale(envNS, dcName, scale) + _, err = kc.SetDeploymentConfigScale(envNS, dcName, scale) if err != nil { return nil, err } @@ -392,7 +404,8 @@ func (oc *openShiftAPIClient) GetDeploymentConfigScale(namespace string, name st return oc.getResource(dcScalePath, false) } -func (oc *openShiftAPIClient) SetDeploymentConfigScale(namespace string, name string, scale map[string]interface{}) error { +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) } @@ -414,7 +427,7 @@ func (kc *kubeClient) getApplicationURL(envNS string, deploy *deployment) (*stri // 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.getEnvironmentNamespace(envName) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -486,7 +499,7 @@ func (kc *kubeClient) GetDeployment(spaceName string, appName string, envName st // 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.getEnvironmentNamespace(envName) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -545,7 +558,7 @@ func (kc *kubeClient) GetDeploymentStats(spaceName string, appName string, envNa // 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.getEnvironmentNamespace(envName) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -602,7 +615,7 @@ func (kc *kubeClient) GetDeploymentStatSeries(spaceName string, appName string, } func (kc *kubeClient) DeleteDeployment(spaceName string, appName string, envName string) error { - envNS, err := kc.getEnvironmentNamespace(envName) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return err } @@ -658,18 +671,21 @@ func (kc *kubeClient) DeleteDeployment(spaceName string, appName string, envName func (kc *kubeClient) GetEnvironments() ([]*app.SimpleEnvironment, error) { envs := []*app.SimpleEnvironment{} for envName := range kc.envMap { - env, err := kc.GetEnvironment(envName) - if err != nil { - return nil, err + // 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) } - 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.getEnvironmentNamespace(envName) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -753,6 +769,18 @@ func (oc *openShiftAPIClient) GetBuildConfigs(namespace string, labelSelector st 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 { @@ -762,10 +790,10 @@ func (kc *kubeClient) getEnvironmentNamespace(envName string) (string, error) { } // 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{}) error { +func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody interface{}) (map[string]interface{}, error) { url, err := oc.config.GetAPIURL() if err != nil { - return err + return nil, err } fullURL := strings.TrimSuffix(*url, "/") + path @@ -775,8 +803,8 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i "err": err, "url": fullURL, "request_body": reqBody, - }, "could not marshall %s request", method) - return errs.WithStack(err) + }, "could not marshal %s request", method) + return nil, errs.WithStack(err) } req, err := http.NewRequest(method, fullURL, bytes.NewBuffer(marshalled)) @@ -786,12 +814,12 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i "url": fullURL, "request_body": reqBody, }, "could not create %s request", method) - return errs.WithStack(err) + return nil, errs.WithStack(err) } token, err := oc.config.GetAPIToken() if err != nil { - return err + return nil, err } req.Header.Set("Content-Type", "application/json") req.Header.Set("Accept", "application/json") @@ -804,7 +832,7 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i "url": fullURL, "request_body": reqBody, }, "could not perform %s request", method) - return errs.WithStack(err) + return nil, errs.WithStack(err) } defer resp.Body.Close() @@ -816,12 +844,12 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i "url": fullURL, "request_body": reqBody, }, "could not read response from %s request", method) - return errs.WithStack(err) + return nil, errs.WithStack(err) } respBody := buf.Bytes() status := resp.StatusCode - if status != http.StatusOK { + if status < http.StatusOK || status > http.StatusPartialContent { log.Error(nil, map[string]interface{}{ "url": fullURL, "request_body": reqBody, @@ -832,11 +860,23 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i // If response contains a Kubernetes Status object, create a StatusError err = parseErrorFromStatus(respBody) if err != nil { - return convertError(errs.WithStack(err), "failed to %s url %s due to status code %d", method, fullURL, status) + return nil, convertError(errs.WithStack(err), "failed to %s url %s due to status code %d", method, fullURL, status) } - return errs.Errorf("failed to %s url %s: status code %d", method, fullURL, status) + return nil, errs.Errorf("failed to %s url %s: status code %d", method, fullURL, status) } - return nil + + 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) { @@ -1049,17 +1089,18 @@ func (kc *kubeClient) deleteDeploymentConfig(spaceName string, dcName string, na }, PropagationPolicy: &policy, } - err = kc.DeleteDeploymentConfig(namespace, dcName, opts) + // 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) error { +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) - // API states this should return a Status object, but it returns the DC instead, - // just check for no HTTP error return oc.sendResource(dcPath, "DELETE", opts) } @@ -2016,7 +2057,7 @@ func (kc *kubeClient) deleteRoutes(appLabel string, envNS string) error { // 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) + _, err := kc.DeleteRoute(envNS, name, opts) if err != nil { return err } @@ -2024,7 +2065,8 @@ func (kc *kubeClient) deleteRoutes(appLabel string, envNS string) error { return nil } -func (oc *openShiftAPIClient) DeleteRoute(namespace string, name string, opts *metaV1.DeleteOptions) error { +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 @@ -2075,7 +2117,7 @@ func (oc *openShiftAPIClient) getResource(path string, allowMissing bool) (map[s status := resp.StatusCode if status == http.StatusNotFound && allowMissing { return nil, nil - } else if status != http.StatusOK { + } else if status < http.StatusOK || status > http.StatusPartialContent { log.Error(nil, map[string]interface{}{ "url": fullURL, "response_body": buf, @@ -2134,3 +2176,22 @@ func convertError(err error, format string, args ...interface{}) error { } 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 +} diff --git a/kubernetes/deployments_kubeclient_blackbox_test.go b/kubernetes/deployments_kubeclient_blackbox_test.go index 791e56f065..73dd42f144 100644 --- a/kubernetes/deployments_kubeclient_blackbox_test.go +++ b/kubernetes/deployments_kubeclient_blackbox_test.go @@ -22,7 +22,10 @@ import ( 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 @@ -1585,9 +1588,12 @@ func (up *testURLProvider) GetMetricsURL(envNS string) (*string, error) { func (up *testURLProvider) GetEnvironmentMapping() map[string]string { return map[string]string{ - "test": "myNamespace", - "run": "my-run", - "stage": "my-stage", + "user": "myNamespace", + "test": "myNamespace", + "run": "my-run", + "stage": "my-stage", + "che": "my-che", + "jenkins": "my-jenkins", } } @@ -1612,3 +1618,300 @@ func modifyURL(apiURLStr string, prefix string, path string) (*url.URL, error) { } 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 index f2802ddcb3..f479430e71 100644 --- a/kubernetes/deployments_kubeclient_whitebox_test.go +++ b/kubernetes/deployments_kubeclient_whitebox_test.go @@ -306,3 +306,7 @@ func (up *testURLProvider) GetEnvironmentMapping() map[string]string { "stage": "my-stage", } } + +func (up *testURLProvider) CanDeploy(envType string) bool { + return true +} diff --git a/log/log.go b/log/log.go index a4c14a0371..cf735a8f20 100644 --- a/log/log.go +++ b/log/log.go @@ -141,7 +141,15 @@ func Error(ctx context.Context, fields map[string]interface{}, format string, ar entry = entry.WithField("req_headers", headers) } if len(req.Params) > 0 { - entry = entry.WithField("req_params", req.Params) + params := make(map[string]interface{}, len(req.Params)) + for k, v := range req.Params { + if k == "access_token" { + params[string(k)] = "*****" + } else { + params[string(k)] = v + } + } + entry = entry.WithField("req_params", params) } if req.ContentLength > 0 { if mp, ok := req.Payload.(map[string]interface{}); ok && mp != nil { diff --git a/main.go b/main.go index 4f6731fa6f..f642550f86 100755 --- a/main.go +++ b/main.go @@ -199,7 +199,9 @@ func main() { service.Use(login.InjectTokenManager(tokenManager)) service.Use(log.LogRequest(config.IsPostgresDeveloperModeEnabled())) + app.UseJWTMiddleware(service, goajwt.New(tokenManager.PublicKeys(), nil, app.NewJWTSecurity())) + app.UseJWTQueryParamMiddleware(service, witmiddleware.New(tokenManager.PublicKeys(), nil, app.NewJWTQueryParamSecurity())) spaceAuthzService := authz.NewAuthzService(config) service.Use(authz.InjectAuthzService(spaceAuthzService)) diff --git a/migration/migration.go b/migration/migration.go index bdaa2b7a1d..5042a50298 100644 --- a/migration/migration.go +++ b/migration/migration.go @@ -446,6 +446,9 @@ func GetMigrations() Migrations { // Version 102 m = append(m, steps{ExecuteSQLFile("102-add-forward-and-reverse-link-type-descriptions.sql")}) + // Version 103 + m = append(m, steps{ExecuteSQLFile("103-user-email-notnull-notempty.sql")}) + // Version N // // In order to add an upgrade, simply append an array of MigrationFunc to the diff --git a/migration/migration_blackbox_test.go b/migration/migration_blackbox_test.go index 36b41bef9c..7acb546cfa 100644 --- a/migration/migration_blackbox_test.go +++ b/migration/migration_blackbox_test.go @@ -149,9 +149,10 @@ func TestMigrations(t *testing.T) { t.Run("TestMigration97", testMigration97RemoveResolutionFieldFromImpediment) t.Run("TestMigration98", testMigration98Boards) t.Run("TestMigration99", testMigration99CodebaseCVEScanDefaultFalse) - t.Run("TestMigration100", testDropUserspacedataTable) - t.Run("TestMigration101", testTypeGroupHasDescriptionField) - t.Run("TestMigration102", testLinkTypeDescriptionFields) + t.Run("TestMigration100", testMigration100DropUserspacedataTable) + t.Run("TestMigration101", testMigration101TypeGroupHasDescriptionField) + t.Run("TestMigration102", testMigration102LinkTypeDescriptionFields) + t.Run("TestMigration103", testMigration103NotNullNotEmptyonEmail) // Perform the migration err = migration.Migrate(sqlDB, databaseName) @@ -1181,6 +1182,45 @@ func testMigration99CodebaseCVEScanDefaultFalse(t *testing.T) { require.Nil(t, runSQLscript(sqlDB, "099-codebase-cve-scan-default-false-cleanup.sql")) } +// testMigration100DropUserspacedataTable tests that the userspace_data +// table no longer exists - previously used as a temporary solution to +// get data from tenant jenkins +func testMigration100DropUserspacedataTable(t *testing.T) { + migrateToVersion(t, sqlDB, migrations[:101], 101) + require.False(t, dialect.HasTable("userspace_data")) +} + +// testMigration101TypeGroupHasDescriptionField checks that the work item type groups table +// has a description after updating to DB version 101. +func testMigration101TypeGroupHasDescriptionField(t *testing.T) { + migrateToVersion(t, sqlDB, migrations[:102], 102) + require.True(t, dialect.HasColumn("work_item_type_groups", "description")) +} + +// testMigration102LinkTypeDescriptionFields checks that the work item link types table has +// a forward_description and a reverse_description after updating to DB version +// 102. +func testMigration102LinkTypeDescriptionFields(t *testing.T) { + migrateToVersion(t, sqlDB, migrations[:103], 103) + require.True(t, dialect.HasColumn("work_item_link_types", "forward_description")) + require.True(t, dialect.HasColumn("work_item_link_types", "reverse_description")) +} + +func testMigration103NotNullNotEmptyonEmail(t *testing.T) { + migrateToVersion(t, sqlDB, migrations[:103], 103) + + // setup + require.Nil(t, runSQLscript(sqlDB, "103-user-email-notnull-notempty.sql")) + + // migrate to the current version + migrateToVersion(t, sqlDB, migrations[:104], 104) + + // check we do not have any empty/null emails + rows, err := sqlDB.Query("SELECT email FROM users where email IS NULL or email = '';") + require.Nil(t, err) + require.False(t, rows.Next(), "row found with email = '' or NULL when all should have a valid email") +} + // runSQLscript loads the given filename from the packaged SQL test files and // executes it on the given database. Golang text/template module is used // to handle all the optional arguments passed to the sql test files @@ -1235,35 +1275,6 @@ func executeSQLTestFile(filename string, args ...string) fn { } } -func testMigration95Boards(t *testing.T) { - migrateToVersion(t, sqlDB, migrations[:95], 95) - assert.True(t, dialect.HasTable("work_item_boards")) - assert.True(t, dialect.HasTable("work_item_board_columns")) -} - -// test that the userspace_data table no longer exists - previously -// used as a temporary solution to get data from tenant jenkins -func testDropUserspacedataTable(t *testing.T) { - migrateToVersion(t, sqlDB, migrations[:101], 101) - require.False(t, dialect.HasTable("userspace_data")) -} - -// testTypeGroupHasDescriptionField checks that the work item type groups table -// has a description after updating to DB version 101. -func testTypeGroupHasDescriptionField(t *testing.T) { - migrateToVersion(t, sqlDB, migrations[:102], 102) - require.True(t, dialect.HasColumn("work_item_type_groups", "description")) -} - -// testLinkTypeDescriptionFields checks that the work item link types table has -// a forward_description and a reverse_description after updating to DB version -// 102. -func testLinkTypeDescriptionFields(t *testing.T) { - migrateToVersion(t, sqlDB, migrations[:103], 103) - require.True(t, dialect.HasColumn("work_item_link_types", "forward_description")) - require.True(t, dialect.HasColumn("work_item_link_types", "reverse_description")) -} - // migrateToVersion runs the migration of all the scripts to a certain version func migrateToVersion(t *testing.T, db *sql.DB, m migration.Migrations, version int64) { var err error diff --git a/migration/sql-files/103-user-email-notnull-notempty.sql b/migration/sql-files/103-user-email-notnull-notempty.sql new file mode 100644 index 0000000000..27f657e01c --- /dev/null +++ b/migration/sql-files/103-user-email-notnull-notempty.sql @@ -0,0 +1,6 @@ +-- Set email = id@example.com for users whose email is '' (empty) or ' ' (any +-- length of only white spaces) or NULL in database +UPDATE users SET email=concat(id::TEXT, '@example.com') WHERE COALESCE(trim(email), '') = ''; + +ALTER TABLE users ALTER COLUMN email SET NOT NULL; +ALTER TABLE users ADD CONSTRAINT email_notempty_check CHECK (trim(email) <> ''); \ No newline at end of file diff --git a/migration/sql-test-files/103-user-email-notnull-notempty.sql b/migration/sql-test-files/103-user-email-notnull-notempty.sql new file mode 100644 index 0000000000..0478051a69 --- /dev/null +++ b/migration/sql-test-files/103-user-email-notnull-notempty.sql @@ -0,0 +1,6 @@ +-- Create users with null/empty email value + +INSERT INTO users (full_name, email) VALUES ('Lorem1', ''); +INSERT INTO users (full_name, email) VALUES ('Lorem2', ' '); +INSERT INTO users (full_name, email) VALUES ('Lorem3', ' '); +INSERT INTO users (full_name, email) VALUES ('Lorem4', NULL); \ No newline at end of file diff --git a/minishift/kedge/db-tenant.yaml b/minishift/kedge/db-tenant.yaml new file mode 100644 index 0000000000..812e80d187 --- /dev/null +++ b/minishift/kedge/db-tenant.yaml @@ -0,0 +1,13 @@ +name: db-tenant + +deployments: + - containers: + - image: registry.centos.org/postgresql/postgresql:9.6 + env: + - name: POSTGRESQL_ADMIN_PASSWORD + value: mysecretpassword + +services: +- name: db-tenant + ports: + - port: 5432 \ No newline at end of file diff --git a/minishift/kedge/proxy.yml b/minishift/kedge/proxy.yml new file mode 100644 index 0000000000..3a2df3897c --- /dev/null +++ b/minishift/kedge/proxy.yml @@ -0,0 +1,19 @@ +name: proxy + +deployments: + - containers: + - image: "[[ WIT_IMAGE_URL ]]" + env: + - name: F8_AUTH_URL + value: "[[ F8_AUTH_URL ]]" + - name: F8_DEVELOPER_MODE_ENABLED + value: "true" + - name: F8_POSTGRES_HOST + value: "db" + +services: +- name: proxy + type: NodePort + ports: + - port: 8080 + nodePort: 30000 diff --git a/minishift/kedge/tenant.yml b/minishift/kedge/tenant.yml new file mode 100644 index 0000000000..e140a7340c --- /dev/null +++ b/minishift/kedge/tenant.yml @@ -0,0 +1,21 @@ +name: tenant + +deployments: + - containers: + - image: "[[ TENANT_IMAGE_URL ]]" + env: + - name: F8_AUTH_URL + value: "[[ F8_AUTH_URL ]]" + - name: F8_DEVELOPER_MODE_ENABLED + value: "true" + - name: F8_POSTGRES_HOST + value: "db-auth" + - name: F8_POSTGRES_PORT + value: "5432" + +services: +- name: tenant + type: NodePort + ports: + - port: 8250 + nodePort: 30000 diff --git a/spacetemplate/assets/agile.yaml b/spacetemplate/assets/agile.yaml index 7ba6ace846..9b97fb7208 100644 --- a/spacetemplate/assets/agile.yaml +++ b/spacetemplate/assets/agile.yaml @@ -123,6 +123,7 @@ work_item_types: - SEV2 - High - SEV3 - Medium - SEV4 - Low + default_value: SEV3 - Medium "priority": label: Priority description: The order in which the developer should resolve a defect. @@ -137,6 +138,7 @@ work_item_types: - P2 - High - P3 - Medium - P4 - Low + default_value: P3 - Medium "resolution": label: Resolution description: > diff --git a/spacetemplate/assets/scrum.yaml b/spacetemplate/assets/scrum.yaml index 34880a1fa3..db19e9e236 100644 --- a/spacetemplate/assets/scrum.yaml +++ b/spacetemplate/assets/scrum.yaml @@ -58,6 +58,7 @@ work_item_types: - Minor - Optional - Trivial + default_value: Minor - id: &impedimentID "ec6918d6-f732-4fc0-a902-6571415aa73c" extends: *scrumCommonTypeID @@ -178,6 +179,7 @@ work_item_types: - High - Medium - Low + default_value: Medium "found_in": label: Found in description: > diff --git a/spacetemplate/importer/import_helper.go b/spacetemplate/importer/import_helper.go index 8a671803ee..20e26d10fc 100644 --- a/spacetemplate/importer/import_helper.go +++ b/spacetemplate/importer/import_helper.go @@ -29,11 +29,15 @@ func (s *ImportHelper) Validate() error { return errs.Wrap(err, "failed to validate space template") } - // Ensure all artifacts have the correct space template ID set + // Ensure all artifacts have the correct space template ID set and are + // valid for _, wit := range s.WITs { if wit.SpaceTemplateID != s.Template.ID { return errors.NewBadParameterError("work item types's space template ID", wit.SpaceTemplateID.String()).Expected(s.Template.ID.String()) } + if err := wit.Validate(); err != nil { + return errs.Wrapf(err, `failed to validate work item type "%s" (ID=%s)`, wit.Name, wit.ID) + } } for _, wilt := range s.WILTs { if wilt.SpaceTemplateID != s.Template.ID { diff --git a/spacetemplate/importer/importer_blackbox_test.go b/spacetemplate/importer/importer_blackbox_test.go index 6f912b9084..a8b3253455 100644 --- a/spacetemplate/importer/importer_blackbox_test.go +++ b/spacetemplate/importer/importer_blackbox_test.go @@ -283,6 +283,7 @@ work_item_types: required: yes type: kind: string + default_value: "foobar" state: label: State description: The state of the bug @@ -295,6 +296,7 @@ work_item_types: values: - new - closed + default_value: closed priority: label: Priority description: The priority of the bug @@ -303,7 +305,8 @@ work_item_types: simple_type: kind: list component_type: - kind: integer + kind: float + default_value: 42.0 work_item_link_types: - id: "` + wiltID.String() + `" name: Blocker @@ -375,7 +378,8 @@ func getValidTestTemplateParsed(t *testing.T, spaceTemplateID, witID, wiltID uui Description: "The title of the bug", Required: true, Type: workitem.SimpleType{ - Kind: workitem.KindString, + Kind: workitem.KindString, + DefaultValue: "foobar", }, }, "state": { @@ -390,6 +394,7 @@ func getValidTestTemplateParsed(t *testing.T, spaceTemplateID, witID, wiltID uui "new", "closed", }, + DefaultValue: "closed", }, }, "priority": { @@ -398,7 +403,8 @@ func getValidTestTemplateParsed(t *testing.T, spaceTemplateID, witID, wiltID uui Required: false, Type: workitem.ListType{ SimpleType: workitem.SimpleType{Kind: workitem.KindList}, - ComponentType: workitem.SimpleType{Kind: workitem.KindInteger}, + ComponentType: workitem.SimpleType{Kind: workitem.KindFloat}, + DefaultValue: 42.0, }, }, }, diff --git a/spacetemplate/importer/repository.go b/spacetemplate/importer/repository.go index 384b164cf4..057be04eb0 100644 --- a/spacetemplate/importer/repository.go +++ b/spacetemplate/importer/repository.go @@ -4,6 +4,7 @@ import ( "context" "fmt" + "github.com/davecgh/go-spew/spew" "github.com/fabric8-services/fabric8-wit/errors" "github.com/fabric8-services/fabric8-wit/id" "github.com/fabric8-services/fabric8-wit/log" @@ -145,9 +146,10 @@ func (r *GormRepository) createOrUpdateWITs(ctx context.Context, s *ImportHelper loadedWIT.Icon = wit.Icon loadedWIT.CanConstruct = wit.CanConstruct - //-------------------------------------------------------------------------------- - // Double check all existing fields are still present in new fields with same type - //-------------------------------------------------------------------------------- + //------------------------------------------------------------------ + // Double check all fields from the old work item type are still + // present in new work item type and still have the same field type. + //------------------------------------------------------------------ // verify that FieldTypes are same as loadedWIT toBeFoundFields := map[string]workitem.FieldType{} for k, fd := range loadedWIT.Fields { @@ -156,16 +158,28 @@ func (r *GormRepository) createOrUpdateWITs(ctx context.Context, s *ImportHelper // Remove fields directly defined in WIT for fieldName, fd := range wit.Fields { // verify FieldType with original value - if originalType, ok := toBeFoundFields[fieldName]; ok { - if equal := fd.Type.Equal(originalType); !equal { + if oldFieldType, ok := toBeFoundFields[fieldName]; ok { + + // When comparing the new and old field types we don't want + // to compare the default value. That is why we always + // overwrite the default value of the old type with the + // default value of the new type. + + defVal := fd.Type.GetDefaultValue() + oldFieldType, err = oldFieldType.SetDefaultValue(defVal) + if err != nil { + return errs.Wrapf(err, "failed to overwrite default of old field type with %+v (%[1]T)", defVal) + } + + if equal := fd.Type.Equal(oldFieldType); !equal { // Special treatment for EnumType - origEnum, ok1 := originalType.(workitem.EnumType) + origEnum, ok1 := oldFieldType.(workitem.EnumType) newEnum, ok2 := fd.Type.(workitem.EnumType) if ok1 && ok2 { equal = newEnum.EqualEnclosing(origEnum) } if !equal { - return errs.Errorf("type of the field %s changed from %s to %s", fieldName, originalType, fd.Type) + return errs.Errorf("type of the field %s changed from %+v to %+v", fieldName, spew.Sdump(oldFieldType), spew.Sdump(fd.Type)) } } } diff --git a/test/kubernetes/can-i-all-groups-resource.yaml b/test/kubernetes/can-i-all-groups-resource.yaml new file mode 100644 index 0000000000..5bd6fee1e2 --- /dev/null +++ b/test/kubernetes/can-i-all-groups-resource.yaml @@ -0,0 +1,8491 @@ +--- +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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..5d245f92d6 --- /dev/null +++ b/test/kubernetes/can-i-all-groups.yaml @@ -0,0 +1,8491 @@ +--- +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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..48b0d2c6ce --- /dev/null +++ b/test/kubernetes/can-i-all-resource.yaml @@ -0,0 +1,8491 @@ +--- +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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..295c05748e --- /dev/null +++ b/test/kubernetes/can-i-bad-resource.yaml @@ -0,0 +1,8480 @@ +--- +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": [ + "appliedclusterresourcequotas", + ["bad", "resource"] + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..f6044d310f --- /dev/null +++ b/test/kubernetes/can-i-bad-rule.yaml @@ -0,0 +1,8480 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + [ "bad", "rule" ], + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..6e1251f91d --- /dev/null +++ b/test/kubernetes/can-i-bad-verbs.yaml @@ -0,0 +1,8480 @@ +--- +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", + ["bad", "verbs"], + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..a07b55fcde --- /dev/null +++ b/test/kubernetes/can-i-empty-group.yaml @@ -0,0 +1,8477 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..18067b78dc --- /dev/null +++ b/test/kubernetes/can-i-no-builds.yaml @@ -0,0 +1,8478 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..7d742e428a --- /dev/null +++ b/test/kubernetes/can-i-no-dc.yaml @@ -0,0 +1,8478 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..a9f5dca939 --- /dev/null +++ b/test/kubernetes/can-i-no-quotas.yaml @@ -0,0 +1,8478 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..5cf9b496e5 --- /dev/null +++ b/test/kubernetes/can-i-no-rules.yaml @@ -0,0 +1,85 @@ +--- +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 new file mode 100644 index 0000000000..c7ad70714c --- /dev/null +++ b/test/kubernetes/can-i-no-status.yaml @@ -0,0 +1,82 @@ +--- +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 new file mode 100644 index 0000000000..a8e37bb7fa --- /dev/null +++ b/test/kubernetes/can-i.yaml @@ -0,0 +1,8479 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 index 06f0f09729..84d3885d50 100644 --- a/test/kubernetes/deletedeployment-badroutes.yaml +++ b/test/kubernetes/deletedeployment-badroutes.yaml @@ -696,652 +696,6 @@ interactions: - application/json;charset=UTF-8 status: 418 I'm a teapot code: 418 - # 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: "" diff --git a/test/kubernetes/deletedeployment-badservices.yaml b/test/kubernetes/deletedeployment-badservices.yaml index 05c818fad2..94aa4602c6 100644 --- a/test/kubernetes/deletedeployment-badservices.yaml +++ b/test/kubernetes/deletedeployment-badservices.yaml @@ -696,652 +696,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-delete-dc-error.yaml b/test/kubernetes/deletedeployment-delete-dc-error.yaml index 570e14fb21..5b6c5559b3 100644 --- a/test/kubernetes/deletedeployment-delete-dc-error.yaml +++ b/test/kubernetes/deletedeployment-delete-dc-error.yaml @@ -546,652 +546,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-delete-routes-error.yaml b/test/kubernetes/deletedeployment-delete-routes-error.yaml index 6546aa387c..3da7e75a36 100644 --- a/test/kubernetes/deletedeployment-delete-routes-error.yaml +++ b/test/kubernetes/deletedeployment-delete-routes-error.yaml @@ -691,652 +691,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-delete-svc-error.yaml b/test/kubernetes/deletedeployment-delete-svc-error.yaml index 96dc76ec6f..079a3c436e 100644 --- a/test/kubernetes/deletedeployment-delete-svc-error.yaml +++ b/test/kubernetes/deletedeployment-delete-svc-error.yaml @@ -741,652 +741,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-get-dc-error.yaml b/test/kubernetes/deletedeployment-get-dc-error.yaml index e64d003aea..cfdfc2cec5 100644 --- a/test/kubernetes/deletedeployment-get-dc-error.yaml +++ b/test/kubernetes/deletedeployment-get-dc-error.yaml @@ -546,652 +546,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-get-routes-error.yaml b/test/kubernetes/deletedeployment-get-routes-error.yaml index c4b66c6ca6..d1f6bed3b9 100644 --- a/test/kubernetes/deletedeployment-get-routes-error.yaml +++ b/test/kubernetes/deletedeployment-get-routes-error.yaml @@ -691,652 +691,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-get-svc-error.yaml b/test/kubernetes/deletedeployment-get-svc-error.yaml index 1054bc31af..feaeb28e93 100644 --- a/test/kubernetes/deletedeployment-get-svc-error.yaml +++ b/test/kubernetes/deletedeployment-get-svc-error.yaml @@ -741,652 +741,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-nobuilds.yaml b/test/kubernetes/deletedeployment-nobuilds.yaml index 637a0f1884..1b70cb45f4 100644 --- a/test/kubernetes/deletedeployment-nobuilds.yaml +++ b/test/kubernetes/deletedeployment-nobuilds.yaml @@ -613,652 +613,6 @@ interactions: - 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": "myApp-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myApp", - "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\":\"myApp\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myApp\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myApp\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"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\"}},\"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\":[\"myApp\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myApp:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myApp\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myApp\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"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\"}},\"spec\":{\"containers\":[{\"name\":\"myApp\",\"image\":\"127.0.0.1:5000/my-run/myApp@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": "myApp", - "group": "myGroup", - "openshift.io/deployment-config.name": "myApp", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myApp-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myApp", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myApp-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myApp", - "deployment": "myApp-1", - "deploymentconfig": "myApp", - "group": "myGroup", - "provider": "fabric8" - }, - "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", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myApp", - "openshift.io/deployment.name": "myApp-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myApp", - "deployment": "myApp-1", - "deploymentconfig": "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 - } - } - }, - "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/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", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myApp-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myApp; cpu limit for container myApp", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myApp", - "openshift.io/deployment.name": "myApp-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myApp-1-", - "labels": { - "app": "myApp", - "deployment": "myApp-1", - "deploymentconfig": "myApp", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myApp-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myApp-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myApp-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/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "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": { - "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/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myApp", - "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/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", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myApp-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myApp; cpu limit for container myApp", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myApp", - "openshift.io/deployment.name": "myApp-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myApp-1-", - "labels": { - "app": "myApp", - "deployment": "myApp-1", - "deploymentconfig": "myApp", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myApp-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myApp-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myApp-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/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "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": { - "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/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myApp", - "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: "" diff --git a/test/kubernetes/deletedeployment-nodc.yaml b/test/kubernetes/deletedeployment-nodc.yaml index 515950ce3a..42d664d199 100644 --- a/test/kubernetes/deletedeployment-nodc.yaml +++ b/test/kubernetes/deletedeployment-nodc.yaml @@ -492,652 +492,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-noroutes.yaml b/test/kubernetes/deletedeployment-noroutes.yaml index 46d4c5f484..eae8d83efc 100644 --- a/test/kubernetes/deletedeployment-noroutes.yaml +++ b/test/kubernetes/deletedeployment-noroutes.yaml @@ -571,652 +571,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-noservices.yaml b/test/kubernetes/deletedeployment-noservices.yaml index 0a8f64d4bc..526e7197cd 100644 --- a/test/kubernetes/deletedeployment-noservices.yaml +++ b/test/kubernetes/deletedeployment-noservices.yaml @@ -696,652 +696,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-wrongspace.yaml b/test/kubernetes/deletedeployment-wrongspace.yaml index 12ade05e30..df4df9274e 100644 --- a/test/kubernetes/deletedeployment-wrongspace.yaml +++ b/test/kubernetes/deletedeployment-wrongspace.yaml @@ -696,652 +696,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment.yaml b/test/kubernetes/deletedeployment.yaml index a02f44aae5..3fe9c042cf 100644 --- a/test/kubernetes/deletedeployment.yaml +++ b/test/kubernetes/deletedeployment.yaml @@ -696,652 +696,6 @@ interactions: - 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: "" diff --git a/teststack.notgo b/teststack.notgo new file mode 100644 index 0000000000..6e647580ba --- /dev/null +++ b/teststack.notgo @@ -0,0 +1,40 @@ +package main + +import ( + "fmt" + + _ "github.com/lib/pq" + errs "github.com/pkg/errors" + log "github.com/sirupsen/logrus" +) + +func func0() error { + return errs.Wrap(fmt.Errorf("some detail"), "some func0 context") +} + +func func1() error { + return errs.Wrap(func0(), "some func1 context") +} + +func func2() error { + e := func1() + return errs.WithStack(e) +} + +func main() { + log.WithFields(log.Fields{ + "animal": "walrus", + "number": 1, + "size": 10, + }).Info("A walrus appears") + fmt.Println("start ppercent %") + + fmt.Println("This is a percent %.") + fmt.Print("This is also a percent %\n") + e := func2() + fmt.Printf("part2\n") + if e != nil { + fmt.Printf("error wuz %+v\n", e) + } + fmt.Printf("all done\n") +} diff --git a/workitem/enum_type.go b/workitem/enum_type.go index fbc7a1eb46..d0d6eac9f5 100644 --- a/workitem/enum_type.go +++ b/workitem/enum_type.go @@ -8,31 +8,81 @@ import ( errs "github.com/pkg/errors" ) +// The EnumType defines the members that make up an enum field type definition. +// The SimpleType is set to KindEnum and the BaseType is set to whatever type of +// enum you want to have (e.g. an enum of strings or integers). The Values array +// specifies what the allowed values in this enum are. If RewritableValues is +// set to true, this type can be overwritten by a work item type that also +// defines a field of the same name with the same type, except with different +// allowed values inside. A classic example for this is the state field that can +// be overwritten by every work item type to fit its needs. type EnumType struct { SimpleType `json:"simple_type"` BaseType SimpleType `json:"base_type"` Values []interface{} `json:"values"` RewritableValues bool `json:"rewritable_values"` + DefaultValue interface{} `json:"default_value,omitempty"` } // Ensure EnumType implements the FieldType interface var _ FieldType = EnumType{} var _ FieldType = (*EnumType)(nil) -// DefaultValue implements FieldType -func (t EnumType) DefaultValue(value interface{}) (interface{}, error) { - if value != nil { - return value, nil +// Validate checks that the type of the enum is "enum", that the base type +// itself a simple type (e.g. not a list or an enum), that the default value +// matches the Kind of the BaseType, that the default value is in the list of +// allowed values and that the Values are all of the base type. +func (t EnumType) Validate() error { + if t.Kind != KindEnum { + return errs.Errorf(`enum has a base type "%s" but needs "%s"`, t.Kind, KindEnum) } + if !t.BaseType.Kind.IsSimpleType() { + return errs.Errorf(`enum type must have a simple component type and not "%s"`, t.Kind) + } + _, err := t.SetDefaultValue(t.DefaultValue) + if err != nil { + return errs.Wrapf(err, "failed to validate default value for kind %s: %+v (%[1]T)", t.Kind, t.DefaultValue) + } + // verify that we have a set of permitted values if t.Values == nil || len(t.Values) <= 0 { - return nil, errs.Errorf("enum has no values") + return errs.Errorf("enum type has no values: %+v", t) + } + for i, v := range t.Values { + _, err := t.ConvertToModel(v) + if err != nil { + return errs.Wrapf(err, `failed to convert value at position %d to kind "%s": %+v`, i, t.BaseType, v) + } } - return t.Values[0], nil + return nil } -// Ensure EnumType implements the FieldType interface -var _ FieldType = EnumType{} -var _ FieldType = (*EnumType)(nil) +// SetDefaultValue implements FieldType +func (t EnumType) SetDefaultValue(v interface{}) (FieldType, error) { + if v == nil { + t.DefaultValue = nil + return t, nil + } + defVal, err := t.ConvertToModel(v) + if err != nil { + return nil, errs.Wrapf(err, "failed to set default value of enum type to %+v (%[1]T)", v) + } + t.DefaultValue = defVal + return t, nil +} + +// GetDefaultValue implements FieldType +func (t EnumType) GetDefaultValue() interface{} { + // manual default value has precedence over first value in list of allowed + // values + if t.DefaultValue != nil { + return t.DefaultValue + } + // fallback to first permitted element + if len(t.Values) > 0 { + return t.Values[0] + } + return nil +} // Ensure EnumType implements the Equaler interface var _ convert.Equaler = EnumType{} @@ -51,7 +101,12 @@ func (t EnumType) Equal(u convert.Equaler) bool { return false } if !t.RewritableValues { - return reflect.DeepEqual(t.Values, other.Values) + if !reflect.DeepEqual(t.Values, other.Values) { + return false + } + } + if !reflect.DeepEqual(t.DefaultValue, other.DefaultValue) { + return false } return true } @@ -76,7 +131,7 @@ func (t EnumType) EqualEnclosing(other EnumType) bool { func (t EnumType) ConvertToModel(value interface{}) (interface{}, error) { converted, err := t.BaseType.ConvertToModel(value) if err != nil { - return nil, fmt.Errorf("error converting enum value: %s", err.Error()) + return nil, errs.Errorf("error converting enum value: %s", err.Error()) } if !contains(t.Values, converted) { diff --git a/workitem/enum_type_blackbox_test.go b/workitem/enum_type_blackbox_test.go index 7bb7a4f65a..ba2aa17acf 100644 --- a/workitem/enum_type_blackbox_test.go +++ b/workitem/enum_type_blackbox_test.go @@ -5,7 +5,7 @@ import ( "github.com/fabric8-services/fabric8-wit/convert" "github.com/fabric8-services/fabric8-wit/resource" - "github.com/fabric8-services/fabric8-wit/workitem" + w "github.com/fabric8-services/fabric8-wit/workitem" "github.com/stretchr/testify/require" ) @@ -13,26 +13,32 @@ func TestEnumType_Equal(t *testing.T) { t.Parallel() resource.Require(t, resource.UnitTest) - a := workitem.EnumType{ - SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, - BaseType: workitem.SimpleType{Kind: workitem.KindString}, + a := w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, Values: []interface{}{"foo", "bar"}, RewritableValues: false, + DefaultValue: "fooooooobar", } - t.Run("type inequality", func(t *testing.T) { require.False(t, a.Equal(convert.DummyEqualer{})) }) t.Run("simple type difference", func(t *testing.T) { b := a - b.SimpleType = workitem.SimpleType{Kind: workitem.KindArea} + b.SimpleType = w.SimpleType{Kind: w.KindArea} require.False(t, a.Equal(b)) }) t.Run("base type difference", func(t *testing.T) { b := a - b.BaseType = workitem.SimpleType{Kind: workitem.KindInteger} + b.BaseType = w.SimpleType{Kind: w.KindInteger} + require.False(t, a.Equal(b)) + }) + + t.Run("default value difference", func(t *testing.T) { + b := a + b.DefaultValue = "foo" require.False(t, a.Equal(b)) }) @@ -68,26 +74,218 @@ func TestEnumType_Equal(t *testing.T) { }) } +func TestEnumType_GetDefaultValue(t *testing.T) { + t.Parallel() + resource.Require(t, resource.UnitTest) + + tests := []struct { + name string + enum w.EnumType + expectedOutput interface{} + }{ + {"return first value of enum when default is nil", w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, + Values: []interface{}{"first", "second", "third"}, + }, "first"}, + {"return custom default when a default is set", w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindInteger}, + Values: []interface{}{111, 222, 333}, + DefaultValue: 222, + }, 222}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + require.Equal(t, tt.expectedOutput, tt.enum.GetDefaultValue()) + }) + } +} + +func TestEnumType_SetDefaultValue(t *testing.T) { + t.Parallel() + resource.Require(t, resource.UnitTest) + + tests := []struct { + name string + enum w.EnumType + defVal interface{} + expectedOutput w.FieldType + wantErr bool + }{ + {"set default to allowed value", + w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, + Values: []interface{}{"first", "second", "third"}, + }, + "second", + &w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, + Values: []interface{}{"first", "second", "third"}, + DefaultValue: "second", + }, + false}, + {"set default to nil value", + w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, + Values: []interface{}{"first", "second", "third"}, + }, + nil, + &w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, + Values: []interface{}{"first", "second", "third"}, + DefaultValue: nil, + }, + false}, + {"set default to not-allowed value (wrong base type)", + w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, + Values: []interface{}{"first", "second", "third"}, + }, + 123, + nil, + true}, + {"set default to not-allowed value (not in list)", + w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, + Values: []interface{}{"first", "second", "third"}, + }, + "foobar", + nil, + true}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + output, err := tt.enum.SetDefaultValue(tt.defVal) + if tt.wantErr { + require.Error(t, err) + } else { + require.NoError(t, err) + require.Equal(t, tt.expectedOutput, output) + } + }) + } +} + +func TestEnumType_Validate(t *testing.T) { + t.Parallel() + tests := []struct { + name string + obj w.EnumType + wantErr bool + }{ + {"ok", w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, + Values: []interface{}{"who", "let", "the", "dogs", "out"}, + RewritableValues: false, + DefaultValue: "the", + }, false}, + {"error - empty values", w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, + Values: []interface{}{}, + RewritableValues: false, + DefaultValue: "the", + }, true}, + {"error - nil values", w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, + Values: nil, + RewritableValues: false, + DefaultValue: "the", + }, true}, + {"invalid type", w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindString}, + BaseType: w.SimpleType{Kind: w.KindString}, + Values: []interface{}{"who", "let", "the", "dogs", "out"}, + RewritableValues: false, + DefaultValue: "the", + }, true}, + {"invalid base type (list)", w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindList}, + Values: []interface{}{"who", "let", "the", "dogs", "out"}, + RewritableValues: false, + DefaultValue: "the", + }, true}, + {"invalid base type (enum)", w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindEnum}, + Values: []interface{}{"who", "let", "the", "dogs", "out"}, + RewritableValues: false, + DefaultValue: "the", + }, true}, + {"invalid string values", w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, + Values: []interface{}{"who", 1, "the", "dogs", "out"}, + RewritableValues: false, + DefaultValue: "the", + }, true}, + {"invalid integer values", w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindInteger}, + Values: []interface{}{1, 2, "the", 4, 5}, + RewritableValues: false, + DefaultValue: "the", + }, true}, + {"invalid default value (wrong type)", w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindInteger}, + Values: []interface{}{1, 2, 3, 4, 5}, + RewritableValues: false, + DefaultValue: "the", + }, true}, + {"invalid default value (not in allowed values)", w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindInteger}, + Values: []interface{}{1, 2, 3, 4, 5}, + RewritableValues: false, + DefaultValue: 42, + }, true}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + err := tt.obj.Validate() + if tt.wantErr { + require.Error(t, err) + } else { + require.NoError(t, err) + } + }) + } +} + func TestEnumType_EqualEnclosing(t *testing.T) { t.Parallel() resource.Require(t, resource.UnitTest) - a := workitem.EnumType{ - SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, - BaseType: workitem.SimpleType{Kind: workitem.KindString}, + a := w.EnumType{ + SimpleType: w.SimpleType{Kind: w.KindEnum}, + BaseType: w.SimpleType{Kind: w.KindString}, Values: []interface{}{"foo", "bar", "baz"}, RewritableValues: false, } t.Run("simple type difference", func(t *testing.T) { b := a - b.SimpleType = workitem.SimpleType{Kind: workitem.KindArea} + b.SimpleType = w.SimpleType{Kind: w.KindArea} require.False(t, a.EqualEnclosing(b)) }) t.Run("base type difference", func(t *testing.T) { b := a - b.BaseType = workitem.SimpleType{Kind: workitem.KindInteger} + b.BaseType = w.SimpleType{Kind: w.KindInteger} require.False(t, a.EqualEnclosing(b)) }) diff --git a/workitem/enum_type_whitebox_test.go b/workitem/enum_type_whitebox_test.go index 644cd7ba96..d0769575ec 100644 --- a/workitem/enum_type_whitebox_test.go +++ b/workitem/enum_type_whitebox_test.go @@ -5,7 +5,6 @@ import ( "github.com/fabric8-services/fabric8-wit/resource" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) func TestEnumTypeContains(t *testing.T) { @@ -103,72 +102,3 @@ func TestEnumTypeContainsAll(t *testing.T) { assert.False(t, containsAll(haystack, needles)) }) } - -func TestEnumTypeDefaultValue(t *testing.T) { - t.Parallel() - resource.Require(t, resource.UnitTest) - - // given - vals := []interface{}{"first", "second", "third"} - e := EnumType{ - SimpleType: SimpleType{Kind: KindEnum}, - BaseType: SimpleType{Kind: KindString}, - Values: vals, - } - - t.Run("default to first value of enum", func(t *testing.T) { - t.Parallel() - // when - def, err := e.DefaultValue(nil) - // then - require.NoError(t, err) - require.Equal(t, def, vals[0]) - }) - - t.Run("return value as is if not nil", func(t *testing.T) { - t.Parallel() - // when - def, err := e.DefaultValue("second") - // then - require.NoError(t, err) - require.Equal(t, def, vals[1]) - }) - - t.Run("return value as is (even if it is not one of the permissable values)", func(t *testing.T) { - t.Parallel() - // when - def, err := e.DefaultValue("not existing value") - // then - require.NoError(t, err) - require.Equal(t, def, "not existing value") - }) - - t.Run("return error when values are nil", func(t *testing.T) { - t.Parallel() - // given - a := EnumType{ - SimpleType: SimpleType{Kind: KindEnum}, - BaseType: SimpleType{Kind: KindString}, - } - // when - def, err := a.DefaultValue(nil) - // then - require.Error(t, err) - require.Nil(t, def) - }) - - t.Run("return error when values are empty", func(t *testing.T) { - t.Parallel() - // given - a := EnumType{ - SimpleType: SimpleType{Kind: KindEnum}, - BaseType: SimpleType{Kind: KindString}, - Values: []interface{}{}, - } - // when - def, err := a.DefaultValue(nil) - // then - require.Error(t, err) - require.Nil(t, def) - }) -} diff --git a/workitem/event/event_repository.go b/workitem/event/event_repository.go index 6adfab9255..8500fa3c16 100644 --- a/workitem/event/event_repository.go +++ b/workitem/event/event_repository.go @@ -16,6 +16,9 @@ import ( // APIStringTypeEvents represent the type of event const APIStringTypeEvents = "events" +// WorkitemTypeChangeEvent represents the attribute name for type change event +const WorkitemTypeChangeEvent = "workitemtype" + // Repository encapsulates retrieval of work item events type Repository interface { //repository.Exister @@ -61,15 +64,6 @@ func (r *GormEventRepository) List(ctx context.Context, wiID uuid.UUID) ([]Event oldRev := revisionList[k-1] newRev := revisionList[k] - // If the new and old work item type are different, we're skipping this - // revision because it denotes the change of a work item type. - // - // TODO(kwk): make sure we have a proper "changed work item type" - // revision entry in one way or another. - if oldRev.WorkItemTypeID != newRev.WorkItemTypeID { - continue - } - wit, err := r.workItemTypeRepo.Load(ctx, oldRev.WorkItemTypeID) if err != nil { return nil, errs.Wrapf(err, "failed to load old work item type: %s", oldRev.WorkItemTypeID) @@ -80,6 +74,24 @@ func (r *GormEventRepository) List(ctx context.Context, wiID uuid.UUID) ([]Event return nil, errs.Wrapf(err, "failed to load modifier identity %s", newRev.ModifierIdentity) } + // TODO(kwk): make sure we have a proper "changed work item type" + // revision entry in one way or another. + // TODO(ibrahim): type change event should have more information than just the new and old type IDs + if oldRev.WorkItemTypeID != newRev.WorkItemTypeID { + event := Event{ + ID: newRev.ID, + Name: WorkitemTypeChangeEvent, + WorkItemTypeID: newRev.WorkItemTypeID, + Timestamp: newRev.Time, + Modifier: modifierID.ID, + Old: oldRev.WorkItemTypeID, + New: newRev.WorkItemTypeID, + } + eventList = append(eventList, event) + // We do not compare any of the fields since this is a type change event. + continue + } + for fieldName, fieldDef := range wit.Fields { oldVal := oldRev.WorkItemFields[fieldName] diff --git a/workitem/event/event_repository_blackbox_test.go b/workitem/event/event_repository_blackbox_test.go index a98fec992e..1f743f335b 100644 --- a/workitem/event/event_repository_blackbox_test.go +++ b/workitem/event/event_repository_blackbox_test.go @@ -378,4 +378,19 @@ func (s *eventRepoBlackBoxTest) TestList() { } assert.Equal(t, 2, c) }) + + s.T().Run("Type change event", func(t *testing.T) { + fxt := tf.NewTestFixture(t, s.DB, tf.WorkItems(1), tf.WorkItemTypes(2)) + fxt.WorkItems[0].Type = fxt.WorkItemTypes[1].ID + wiNew, err := s.wiRepo.Save(s.Ctx, fxt.WorkItems[0].SpaceID, *fxt.WorkItems[0], fxt.Identities[0].ID) + require.NoError(t, err) + require.Equal(t, fxt.WorkItemTypes[1].ID, wiNew.Type) + eventList, err := s.wiEventRepo.List(s.Ctx, fxt.WorkItems[0].ID) + require.NoError(t, err) + require.NotEmpty(t, eventList) + require.Len(t, eventList, 1) + assert.Equal(t, event.WorkitemTypeChangeEvent, eventList[0].Name) + assert.Equal(t, fxt.WorkItemTypes[0].ID, eventList[0].Old) + assert.Equal(t, fxt.WorkItemTypes[1].ID, eventList[0].New) + }) } diff --git a/workitem/field_definition.go b/workitem/field_definition.go index 413e2cc0b6..2762cac354 100644 --- a/workitem/field_definition.go +++ b/workitem/field_definition.go @@ -72,9 +72,15 @@ type FieldType interface { ConvertFromModel(value interface{}) (interface{}, error) // Implement the Equaler interface Equal(u convert.Equaler) bool - // DefaultValue is called if a field is not specified. In it's simplest form - // the DefaultValue returns the given input value without any conversion. - DefaultValue(value interface{}) (interface{}, error) + // GetDefaultValue is called if a field's value is nil. + GetDefaultValue() interface{} + // SetDefaultValue returns a copy of the FieldType object at hand if there + // was no error setting the default value of that field type. + SetDefaultValue(v interface{}) (FieldType, error) + // Validate checks that the type definition of a field is correct. Take a + // look at the implementation of this function to find out what's actually + // been checked for each individual type. + Validate() error } // FieldDefinition describes type & other restrictions of a field @@ -93,8 +99,13 @@ var _ convert.Equaler = (*FieldDefinition)(nil) // Ensure FieldDefinition implements the json.Unmarshaler interface var _ json.Unmarshaler = (*FieldDefinition)(nil) -// // Ensure FieldDefinition implements the yaml.Unmarshaler interface -// var _ yaml.Unmarshaler = (*FieldDefinition)(nil) +// Validate checks that a field has a proper setup +func (f FieldDefinition) Validate() error { + if strings.TrimSpace(f.Label) == "" { + return errs.Errorf(`field label is empty "%s" when trimmed`, f.Label) + } + return f.Type.Validate() +} // Equal returns true if two FieldDefinition objects are equal; otherwise false is returned. func (f FieldDefinition) Equal(u convert.Equaler) bool { @@ -121,11 +132,7 @@ func (f FieldDefinition) Equal(u convert.Equaler) bool { func (f FieldDefinition) ConvertToModel(name string, value interface{}) (interface{}, error) { // Overwrite value if default value if none was provided if value == nil { - defValue, err := f.Type.DefaultValue(value) - if err != nil { - return nil, errs.Wrapf(err, "failed to get default value for field \"%s\"", name) - } - value = defValue + value = f.Type.GetDefaultValue() } if f.Required { @@ -183,19 +190,15 @@ func (f rawFieldDef) Equal(u convert.Equaler) bool { if f.Description != other.Description { return false } - if f.Type == nil && other.Type == nil { - return true - } - if f.Type != nil && other.Type != nil { - return reflect.DeepEqual(f.Type, other.Type) + if !reflect.DeepEqual(f.Type, other.Type) { + return false } - return false + return true } // UnmarshalJSON implements encoding/json.Unmarshaler func (f *FieldDefinition) UnmarshalJSON(bytes []byte) error { temp := rawFieldDef{} - err := json.Unmarshal(bytes, &temp) if err != nil { return errs.Wrapf(err, "failed to unmarshall field definition into rawFieldDef") diff --git a/workitem/json_storage.go b/workitem/json_storage.go index 680e5f6e7d..f8257a29c8 100644 --- a/workitem/json_storage.go +++ b/workitem/json_storage.go @@ -10,13 +10,15 @@ import ( errs "github.com/pkg/errors" ) +// Fields is a helper map that later gets replaced with the FieldDefinitions +// type and only exists for parsing in content from JSON. type Fields map[string]interface{} // Ensure Fields implements the Equaler interface var _ convert.Equaler = Fields{} var _ convert.Equaler = (*Fields)(nil) -// Ensure Fields implements the Scanner and Valuer interfaces +// Ensure Fields implements the sql.Scanner and driver.Valuer interfaces var _ sql.Scanner = (*Fields)(nil) var _ driver.Valuer = (*Fields)(nil) @@ -30,6 +32,7 @@ func (f Fields) Equal(u convert.Equaler) bool { return reflect.DeepEqual(f, other) } +// Value implements the driver.Valuer interface func (f Fields) Value() (driver.Value, error) { return toBytes(f) } @@ -41,6 +44,8 @@ func (f *Fields) Scan(src interface{}) error { return fromBytes(src, f) } +// FieldDefinitions define a map of field names pointing to their field +// definition. type FieldDefinitions map[string]FieldDefinition // Ensure FieldDefinitions implements the Scanner and Valuer interfaces @@ -59,6 +64,19 @@ func (j *FieldDefinitions) Scan(src interface{}) error { return fromBytes(src, j) } +// Validate checks that each field definition is valid +func (j *FieldDefinitions) Validate() error { + if j == nil { + return errs.New("fields not defined") + } + for name, field := range *j { + if err := field.Validate(); err != nil { + return errs.Wrapf(err, "failed to validate field %s", name) + } + } + return nil +} + func toBytes(j interface{}) (driver.Value, error) { if j == nil { // log.Trace("returning null") diff --git a/workitem/list_type.go b/workitem/list_type.go index ec32a29bde..fc6faf7892 100644 --- a/workitem/list_type.go +++ b/workitem/list_type.go @@ -5,12 +5,14 @@ import ( "reflect" "github.com/fabric8-services/fabric8-wit/convert" + errs "github.com/pkg/errors" ) -//ListType describes a list of SimpleType values +// ListType describes a list of SimpleType values type ListType struct { SimpleType `json:"simple_type"` - ComponentType SimpleType `json:"component_type"` + ComponentType SimpleType `json:"component_type"` + DefaultValue interface{} `json:"default_value,omitempty"` } // Ensure ListType implements the FieldType interface @@ -21,9 +23,40 @@ var _ FieldType = (*ListType)(nil) var _ convert.Equaler = ListType{} var _ convert.Equaler = (*ListType)(nil) -// DefaultValue implements FieldType -func (t ListType) DefaultValue(value interface{}) (interface{}, error) { - return value, nil +// Validate checks that the type of the list is "list", that the component type +// iteself a simple tpye (e.g. not a list or an enum) and that the default value +// matches the Kind of the ComponentType. +func (t ListType) Validate() error { + if t.Kind != KindList { + return errs.Errorf(`list type cannot have a base type "%s" but needs "%s"`, t.Kind, KindList) + } + if !t.ComponentType.Kind.IsSimpleType() { + return errs.Errorf(`list type must have a simple component type and not "%s"`, t.Kind) + } + _, err := t.SetDefaultValue(t.DefaultValue) + if err != nil { + return errs.Wrapf(err, "failed to validate default value for kind %s: %+v (%[1]T)", t.Kind, t.DefaultValue) + } + return nil +} + +// SetDefaultValue implements FieldType +func (t ListType) SetDefaultValue(v interface{}) (FieldType, error) { + if v == nil { + t.DefaultValue = nil + return t, nil + } + defVal, err := t.ComponentType.ConvertToModel(v) + if err != nil { + return nil, errs.Wrapf(err, "failed to set default value of list type to %+v (%[1]T)", v) + } + t.DefaultValue = defVal + return t, nil +} + +// GetDefaultValue implements FieldType +func (t ListType) GetDefaultValue() interface{} { + return t.DefaultValue } // Equal returns true if two ListType objects are equal; otherwise false is returned. @@ -35,6 +68,9 @@ func (t ListType) Equal(u convert.Equaler) bool { if !t.SimpleType.Equal(other.SimpleType) { return false } + if !reflect.DeepEqual(t.DefaultValue, other.DefaultValue) { + return false + } return t.ComponentType.Equal(other.ComponentType) } diff --git a/workitem/list_type_blackbox_test.go b/workitem/list_type_blackbox_test.go index 6cf53ed3ec..44ba116848 100644 --- a/workitem/list_type_blackbox_test.go +++ b/workitem/list_type_blackbox_test.go @@ -7,6 +7,7 @@ import ( "github.com/fabric8-services/fabric8-wit/resource" . "github.com/fabric8-services/fabric8-wit/workitem" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestListType_Equal(t *testing.T) { @@ -43,3 +44,143 @@ func TestListType_Equal(t *testing.T) { assert.True(t, d.Equal(a)) assert.True(t, a.Equal(d)) // test the inverse } + +func TestListType_Validate(t *testing.T) { + t.Parallel() + tests := []struct { + name string + obj ListType + wantErr bool + }{ + {"ok", ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindString}, + DefaultValue: "the", + }, false}, + {"invalid type", ListType{ + SimpleType: SimpleType{Kind: KindInteger}, + ComponentType: SimpleType{Kind: KindString}, + DefaultValue: "the", + }, true}, + {"invalid component type (enum)", ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindEnum}, + DefaultValue: "the", + }, true}, + {"invalid component type (list)", ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindList}, + DefaultValue: "the", + }, true}, + {"invalid default value (string expect, int provided)", ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindString}, + DefaultValue: 42, + }, true}, + {"invalid default value (int expect, string provided)", ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindInteger}, + DefaultValue: "foo", + }, true}, + {"invalid default value (int expect, array of int provided)", ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindInteger}, + DefaultValue: []int{1, 2, 3}, + }, true}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + err := tt.obj.Validate() + if tt.wantErr { + require.Error(t, err) + } else { + require.NoError(t, err) + } + }) + } +} + +func TestListType_GetDefaultValue(t *testing.T) { + t.Parallel() + tests := []struct { + name string + listType ListType + output interface{} + }{ + {"ok - string list", ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindString}, + DefaultValue: "the", + }, "the"}, + {"ok - default is nil", ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindString}, + }, nil}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + require.Equal(t, tt.output, tt.listType.GetDefaultValue()) + + }) + } +} + +func TestListType_SetDefaultValue(t *testing.T) { + t.Parallel() + resource.Require(t, resource.UnitTest) + + tests := []struct { + name string + enum ListType + defVal interface{} + expectedOutput FieldType + wantErr bool + }{ + {"set default to allowed value", + ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindString}, + }, + []interface{}{"second"}, + &ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindString}, + DefaultValue: []interface{}{"second"}, + }, + false}, + {"set default to nil", + ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindString}, + }, + nil, + &ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindString}, + DefaultValue: nil, + }, + false}, + {"set default to not-allowed (wrong component type)", + ListType{ + SimpleType: SimpleType{Kind: KindList}, + ComponentType: SimpleType{Kind: KindString}, + }, + 123, + nil, + true}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + output, err := tt.enum.SetDefaultValue(tt.defVal) + if tt.wantErr { + require.Error(t, err) + } else { + require.NoError(t, err) + require.Equal(t, tt.expectedOutput, output) + } + }) + } +} diff --git a/workitem/simple_type.go b/workitem/simple_type.go index a636e6bfc8..1c7359fbe8 100644 --- a/workitem/simple_type.go +++ b/workitem/simple_type.go @@ -14,7 +14,8 @@ import ( // SimpleType is an unstructured FieldType type SimpleType struct { - Kind Kind `json:"kind"` + Kind Kind `json:"kind"` + DefaultValue interface{} `json:"default_value,omitempty"` } // Ensure SimpleType implements the FieldType interface @@ -25,9 +26,35 @@ var _ FieldType = (*SimpleType)(nil) var _ convert.Equaler = SimpleType{} var _ convert.Equaler = (*SimpleType)(nil) -// DefaultValue implements FieldType -func (t SimpleType) DefaultValue(value interface{}) (interface{}, error) { - return value, nil +// Validate checks that the default value matches the Kind +func (t SimpleType) Validate() error { + if !t.Kind.IsSimpleType() { + return errs.New("a simple type can only have a simple type (e.g. no list or enum)") + } + _, err := t.SetDefaultValue(t.DefaultValue) + if err != nil { + return errs.Wrapf(err, "failed to validate default value for kind %s: %+v (%[1]T)", t.Kind, t.DefaultValue) + } + return nil +} + +// SetDefaultValue implements FieldType +func (t SimpleType) SetDefaultValue(v interface{}) (FieldType, error) { + if v == nil { + t.DefaultValue = nil + return t, nil + } + defVal, err := t.ConvertToModel(v) + if err != nil { + return nil, errs.Wrapf(err, "failed to set default value of simple type to %+v (%[1]T)", v) + } + t.DefaultValue = defVal + return t, nil +} + +// GetDefaultValue implements FieldType +func (t SimpleType) GetDefaultValue() interface{} { + return t.DefaultValue } // Equal returns true if two SimpleType objects are equal; otherwise false is returned. @@ -36,6 +63,9 @@ func (t SimpleType) Equal(u convert.Equaler) bool { if !ok { return false } + if t.DefaultValue != other.DefaultValue { + return false + } return t.Kind == other.Kind } @@ -111,6 +141,12 @@ func (t SimpleType) ConvertToModel(value interface{}) (interface{}, error) { return nil, errs.Errorf("value %v (%[1]T) has no valid markup type %s", value, markupContent.Markup) } return markupContent.ToMap(), nil + case map[string]interface{}: + markupContent := rendering.NewMarkupContentFromValue(value) + if !rendering.IsMarkupSupported(markupContent.Markup) { + return nil, errs.Errorf("value %v (%[1]T) has no valid markup type %s", value, markupContent.Markup) + } + return markupContent.ToMap(), nil default: return nil, errs.Errorf("value %v (%[1]T) should be rendering.MarkupContent, but is %s", value, valueType) } diff --git a/workitem/simple_type_blackbox_test.go b/workitem/simple_type_blackbox_test.go index 9000acf59e..cefb19f4cb 100644 --- a/workitem/simple_type_blackbox_test.go +++ b/workitem/simple_type_blackbox_test.go @@ -6,36 +6,118 @@ import ( "github.com/fabric8-services/fabric8-wit/convert" "github.com/fabric8-services/fabric8-wit/resource" . "github.com/fabric8-services/fabric8-wit/workitem" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) -func TestSimpleTypeEqual(t *testing.T) { +func TestSimpleType_Equal(t *testing.T) { t.Parallel() resource.Require(t, resource.UnitTest) - // Test type difference - a := SimpleType{Kind: KindString} - assert.False(t, a.Equal(convert.DummyEqualer{})) + t.Run("type difference", func(t *testing.T) { + t.Parallel() + a := SimpleType{Kind: KindString} + require.False(t, a.Equal(convert.DummyEqualer{})) + }) - // Test kind difference - b := SimpleType{Kind: KindInteger} - assert.False(t, a.Equal(b)) + t.Run("kind difference", func(t *testing.T) { + t.Parallel() + a := SimpleType{Kind: KindString} + b := SimpleType{Kind: KindInteger} + require.False(t, a.Equal(b)) + }) + + t.Run("default difference", func(t *testing.T) { + t.Parallel() + a := SimpleType{Kind: KindInteger, DefaultValue: 1} + b := SimpleType{Kind: KindInteger} + require.False(t, a.Equal(b)) + }) +} + +func TestSimpleType_Validate(t *testing.T) { + t.Parallel() + tests := []struct { + name string + obj SimpleType + wantErr bool + }{ + {"ok int field", SimpleType{Kind: KindInteger, DefaultValue: 333}, false}, + {"ok string field", SimpleType{Kind: KindString, DefaultValue: "foo"}, false}, + {"invalid default (int given, string expected)", SimpleType{Kind: KindString, DefaultValue: 333}, true}, + {"ok string field", SimpleType{Kind: KindInteger, DefaultValue: "foo"}, true}, + {"invalud kind (enum)", SimpleType{Kind: KindEnum, DefaultValue: "foo"}, true}, + {"invalid kind (list)", SimpleType{Kind: KindList, DefaultValue: "foo"}, true}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + err := tt.obj.Validate() + if tt.wantErr { + require.Error(t, err) + } else { + require.NoError(t, err) + } + }) + } +} + +func TestSimpleType_GetDefault(t *testing.T) { + t.Parallel() + tests := []struct { + name string + obj SimpleType + output interface{} + }{ + {"ok - int field: output 333", SimpleType{Kind: KindInteger, DefaultValue: 333}, 333}, + {"ok - float field: output 33.3", SimpleType{Kind: KindFloat, DefaultValue: 33.3}, 33.3}, + {"ok - string field: output \"foo\"", SimpleType{Kind: KindString, DefaultValue: "foo"}, "foo"}, + {"ok - string field nil default", SimpleType{Kind: KindString}, nil}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + require.Equal(t, tt.output, tt.obj.GetDefaultValue()) + }) + } } -func TestConvertToModel(t *testing.T) { +func TestSimpleType_SetDefaultValue(t *testing.T) { t.Parallel() resource.Require(t, resource.UnitTest) - // Test nil value - a := SimpleType{Kind: KindString} - res, err := a.ConvertToModel(nil) - assert.Nil(t, res) - require.NoError(t, err) - - // Test default case in swtich statement - b := 42 - res, err = a.ConvertToModel(&b) - assert.NotNil(t, err) - assert.Nil(t, res) + tests := []struct { + name string + enum SimpleType + defVal interface{} + expectedOutput FieldType + wantErr bool + }{ + {"set default to allowed value", + SimpleType{Kind: KindString}, + "foo", + &SimpleType{Kind: KindString, DefaultValue: "foo"}, + false}, + {"set default to nil", + SimpleType{Kind: KindString}, + nil, + &SimpleType{Kind: KindString, DefaultValue: nil}, + false}, + {"set default to not-allowed value", + SimpleType{Kind: KindString}, + 123, + nil, + true}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + output, err := tt.enum.SetDefaultValue(tt.defVal) + if tt.wantErr { + require.Error(t, err) + } else { + require.NoError(t, err) + require.Equal(t, tt.expectedOutput, output) + } + }) + } } diff --git a/workitem/workitem.go b/workitem/workitem.go index 42a85da7cc..b44620b1f2 100644 --- a/workitem/workitem.go +++ b/workitem/workitem.go @@ -1,10 +1,14 @@ package workitem import ( + "reflect" + "sort" "time" + "github.com/fabric8-services/fabric8-wit/actions/change" "github.com/fabric8-services/fabric8-wit/log" + errs "github.com/pkg/errors" uuid "github.com/satori/go.uuid" ) @@ -53,3 +57,112 @@ func (wi WorkItem) GetLastModified() time.Time { log.Debug(nil, map[string]interface{}{"wi_id": wi.ID}, "Last modified value: %v", lastModified) return *lastModified } + +// ChangeSet derives a changeset between this workitem and a given workitem. +func (wi WorkItem) ChangeSet(older change.Detector) (change.Set, error) { + if older == nil { + // this is changeset for a new ChangeDetector, report all observed attributes to + // the change set. This needs extension once we support more attributes. + changeSet := change.Set{ + { + AttributeName: SystemState, + NewValue: wi.Fields[SystemState], + OldValue: nil, + }, + } + if wi.Fields[SystemBoardcolumns] != nil && len(wi.Fields[SystemBoardcolumns].([]interface{})) != 0 { + changeSet = append(changeSet, change.Change{ + AttributeName: SystemBoardcolumns, + NewValue: wi.Fields[SystemBoardcolumns], + OldValue: nil, + }) + } + return changeSet, nil + } + olderWorkItem, ok := older.(WorkItem) + if !ok { + return nil, errs.New("Other entity is not a WorkItem: " + reflect.TypeOf(older).String()) + } + if wi.ID != olderWorkItem.ID { + return nil, errs.New("Other entity has not the same ID: " + olderWorkItem.ID.String()) + } + changes := []change.Change{} + // CAUTION: we're only supporting changes to the system.state and to the + // board position relationship for now. If we need to support more + // attribute changes, this has to be added here. This will be likely + // necessary when adding new Actions. + // compare system.state + if wi.Fields[SystemState] != olderWorkItem.Fields[SystemState] { + changes = append(changes, change.Change{ + AttributeName: SystemState, + NewValue: wi.Fields[SystemState], + OldValue: olderWorkItem.Fields[SystemState], + }) + } + // compare system.boardcolumns + // this field looks like this: + // system.boardcolumns": ["43f9e838-3b4b-45e8-85eb-dd402e8324b5", "69699af8-cb28-4b90-b829-24c1aad12797"] + if wi.Fields[SystemBoardcolumns] == nil && olderWorkItem.Fields[SystemBoardcolumns] == nil { + return changes, nil + } + if wi.Fields[SystemBoardcolumns] == nil || olderWorkItem.Fields[SystemBoardcolumns] == nil { + changes = append(changes, change.Change{ + AttributeName: SystemBoardcolumns, + NewValue: wi.Fields[SystemBoardcolumns], + OldValue: olderWorkItem.Fields[SystemBoardcolumns], + }) + return changes, nil + } + if len(wi.Fields[SystemBoardcolumns].([]interface{})) == 0 || len(olderWorkItem.Fields[SystemBoardcolumns].([]interface{})) == 0 { + if len(wi.Fields[SystemBoardcolumns].([]interface{})) == 0 && len(olderWorkItem.Fields[SystemBoardcolumns].([]interface{})) == 0 { + // both lists are empty, return no change. + return changes, nil + } + // one of the lists is empty, do return a change. + changes = append(changes, change.Change{ + AttributeName: SystemBoardcolumns, + NewValue: wi.Fields[SystemBoardcolumns], + OldValue: olderWorkItem.Fields[SystemBoardcolumns], + }) + return changes, nil + } + bcThis, ok1 := wi.Fields[SystemBoardcolumns].([]interface{}) + bcOlder, ok2 := olderWorkItem.Fields[SystemBoardcolumns].([]interface{}) + if !ok1 || !ok2 { + return nil, errs.New("Boardcolumn slice is not a interface{} slice") + } + if len(bcThis) != len(bcOlder) { + changes = append(changes, change.Change{ + AttributeName: SystemBoardcolumns, + NewValue: wi.Fields[SystemBoardcolumns], + OldValue: olderWorkItem.Fields[SystemBoardcolumns], + }) + return changes, nil + } + // because of the handing of interface{}, we need to do manual conversion here. + thisCopyStr := make([]string, len(bcThis)) + for i := range bcThis { + thisCopyStr[i], ok = bcThis[i].(string) + if !ok { + return nil, errs.New("Boardcolumn slice values are not of type string") + } + } + olderCopyStr := make([]string, len(bcOlder)) + for i := range bcOlder { + olderCopyStr[i], ok = bcOlder[i].(string) + if !ok { + return nil, errs.New("Boardcolumn slice values are not of type string") + } + } + sort.Strings(thisCopyStr) + sort.Strings(olderCopyStr) + if !reflect.DeepEqual(thisCopyStr, olderCopyStr) { + changes = append(changes, change.Change{ + AttributeName: SystemBoardcolumns, + NewValue: wi.Fields[SystemBoardcolumns], + OldValue: olderWorkItem.Fields[SystemBoardcolumns], + }) + return changes, nil + } + return changes, nil +} diff --git a/workitem/workitem_repository.go b/workitem/workitem_repository.go index 448565025e..4c2218a8f8 100644 --- a/workitem/workitem_repository.go +++ b/workitem/workitem_repository.go @@ -1,16 +1,22 @@ package workitem import ( + "bytes" "context" "fmt" + "sort" "strconv" "strings" + "text/template" "time" - "github.com/fabric8-services/fabric8-wit/closeable" + "github.com/fabric8-services/fabric8-wit/label" "github.com/fabric8-services/fabric8-wit/account" "github.com/fabric8-services/fabric8-wit/application/repository" + "github.com/fabric8-services/fabric8-wit/area" + "github.com/fabric8-services/fabric8-wit/closeable" + "github.com/fabric8-services/fabric8-wit/codebase" "github.com/fabric8-services/fabric8-wit/criteria" "github.com/fabric8-services/fabric8-wit/errors" "github.com/fabric8-services/fabric8-wit/iteration" @@ -97,25 +103,28 @@ type WorkItemRepository interface { GetCountsPerIteration(ctx context.Context, spaceID uuid.UUID) (map[string]WICountsPerIteration, error) GetCountsForIteration(ctx context.Context, itr *iteration.Iteration) (map[string]WICountsPerIteration, error) Count(ctx context.Context, spaceID uuid.UUID, criteria criteria.Expression) (int, error) + ChangeWorkItemType(ctx context.Context, wiStorage *WorkItemStorage, oldWIType *WorkItemType, newWIType *WorkItemType, spaceID uuid.UUID) error } // NewWorkItemRepository creates a GormWorkItemRepository func NewWorkItemRepository(db *gorm.DB) *GormWorkItemRepository { repository := &GormWorkItemRepository{ - db: db, - winr: numbersequence.NewWorkItemNumberSequenceRepository(db), - witr: &GormWorkItemTypeRepository{db}, - wirr: &GormRevisionRepository{db}, + db: db, + winr: numbersequence.NewWorkItemNumberSequenceRepository(db), + witr: &GormWorkItemTypeRepository{db}, + wirr: &GormRevisionRepository{db}, + space: space.NewRepository(db), } return repository } // GormWorkItemRepository implements WorkItemRepository using gorm type GormWorkItemRepository struct { - db *gorm.DB - winr *numbersequence.GormWorkItemNumberSequenceRepository - witr *GormWorkItemTypeRepository - wirr *GormRevisionRepository + db *gorm.DB + winr *numbersequence.GormWorkItemNumberSequenceRepository + witr *GormWorkItemTypeRepository + wirr *GormRevisionRepository + space *space.GormRepository } // ************************************************ @@ -578,9 +587,7 @@ func (r *GormWorkItemRepository) Save(ctx context.Context, spaceID uuid.UUID, up return nil, errors.NewVersionConflictError("version conflict") } wiStorage.Version = wiStorage.Version + 1 - wiStorage.Type = updatedWorkItem.Type wiStorage.Fields = Fields{} - for fieldName, fieldDef := range wiType.Fields { if fieldDef.ReadOnly { continue @@ -606,6 +613,18 @@ func (r *GormWorkItemRepository) Save(ctx context.Context, spaceID uuid.UUID, up return nil, errors.NewBadParameterError(fieldName, fieldValue) } } + // Change of Work Item Type + if wiStorage.Type != updatedWorkItem.Type { + newWiType, err := r.witr.Load(ctx, updatedWorkItem.Type) + if err != nil { + return nil, errs.Wrapf(err, "failed to load workitemtype: %s ", updatedWorkItem.Type) + } + if err := r.ChangeWorkItemType(ctx, wiStorage, wiType, newWiType, spaceID); err != nil { + return nil, errs.Wrapf(err, "unable to change workitem type from %s (ID: %s) to %s (ID: %s)", wiType.Name, wiType.ID, newWiType.Name, newWiType.ID) + } + // This will be used by the ConvertWorkItemStorageToModel function + wiType = newWiType + } tx := r.db.Where("Version = ?", updatedWorkItem.Version).Save(&wiStorage) if err := tx.Error; err != nil { log.Error(ctx, map[string]interface{}{ @@ -631,42 +650,58 @@ func (r *GormWorkItemRepository) Save(ctx context.Context, spaceID uuid.UUID, up return ConvertWorkItemStorageToModel(wiType, wiStorage) } -// Create creates a new work item in the repository -// returns BadParameterError, ConversionError or InternalError -func (r *GormWorkItemRepository) Create(ctx context.Context, spaceID uuid.UUID, typeID uuid.UUID, fields map[string]interface{}, creatorID uuid.UUID) (*WorkItem, error) { - defer goa.MeasureSince([]string{"goa", "db", "workitem", "create"}, time.Now()) - - wiType, err := r.witr.Load(ctx, typeID) - if err != nil { - return nil, errors.NewBadParameterError("typeID", typeID) - } - +// CheckTypeAndSpaceShareTemplate returns true if the given workitem type (wit) +// belongs to the same space template as the space (spaceID); otherwise false is +// returned +func (r *GormWorkItemRepository) CheckTypeAndSpaceShareTemplate(ctx context.Context, wit *WorkItemType, spaceID uuid.UUID) (bool, error) { // Prohibit creation of work items from a base type. - if !wiType.CanConstruct { - return nil, errors.NewForbiddenError(fmt.Sprintf("cannot construct work items from \"%s\" (%s)", wiType.Name, wiType.ID)) + if !wit.CanConstruct { + return false, errors.NewForbiddenError(fmt.Sprintf("cannot construct work items from \"%s\" (%s)", wit.Name, wit.ID)) } var exists bool // Prohibit creation of work items from a type that doesn't belong to current space template query := fmt.Sprintf(` - SELECT EXISTS ( - SELECT 1 from %[1]s WHERE id=$1 AND space_template_id = ( - SELECT space_template_id FROM %[2]s WHERE id=$2 - ) - )`, wiType.TableName(), space.Space{}.TableName()) - err = r.db.Raw(query, wiType.ID, spaceID).Row().Scan(&exists) + SELECT EXISTS ( + SELECT 1 from %[1]s WHERE id=$1 AND space_template_id = ( + SELECT space_template_id FROM %[2]s WHERE id=$2 + ) + )`, wit.TableName(), space.Space{}.TableName()) + err := r.db.Raw(query, wit.ID, spaceID).Row().Scan(&exists) if err == nil && !exists { - return nil, errors.NewBadParameterErrorFromString( - fmt.Sprintf("Workitem Type \"%s\" (ID: %s) does not belong to the current space template", wiType.Name, wiType.ID), + return false, errors.NewBadParameterErrorFromString( + fmt.Sprintf("Workitem Type \"%s\" (ID: %s) does not belong to the current space template", wit.Name, wit.ID), ) } if err != nil { log.Error(ctx, map[string]interface{}{ "space_id": spaceID, - "workitem_type_id": wiType.ID, + "workitem_type_id": wit.ID, "err": err, }, "unable to fetch workitem types related to current space") - return nil, errors.NewInternalError(ctx, errs.Wrapf(err, "unable to verify if %s exists", wiType.ID)) + return false, errors.NewInternalError(ctx, errs.Wrapf(err, "unable to verify if %s exists", wit.ID)) + } + return true, nil +} + +// Create creates a new work item in the repository +// returns BadParameterError, ConversionError or InternalError +func (r *GormWorkItemRepository) Create(ctx context.Context, spaceID uuid.UUID, typeID uuid.UUID, fields map[string]interface{}, creatorID uuid.UUID) (*WorkItem, error) { + defer goa.MeasureSince([]string{"goa", "db", "workitem", "create"}, time.Now()) + + wiType, err := r.witr.Load(ctx, typeID) + if err != nil { + return nil, errors.NewBadParameterError("typeID", typeID) + } + + allowedWIT, err := r.CheckTypeAndSpaceShareTemplate(ctx, wiType, spaceID) + if err != nil { + return nil, err + } + if !allowedWIT { + return nil, err + } + // The order of workitems are spaced by a factor of 1000. pos, err := r.LoadHighestOrder(ctx, spaceID) if err != nil { @@ -693,7 +728,7 @@ func (r *GormWorkItemRepository) Create(ctx context.Context, spaceID uuid.UUID, var err error wi.Fields[fieldName], err = fieldDef.ConvertToModel(fieldName, fieldValue) if err != nil { - return nil, errors.NewBadParameterError(fieldName, fieldValue) + return nil, errors.NewBadParameterError(fieldName, fieldValue) // TODO(kwk): Change errors pkg to consume the original error as well } if (fieldName == SystemAssignees || fieldName == SystemLabels || fieldName == SystemBoardcolumns) && fieldValue == nil { delete(wi.Fields, fieldName) @@ -1131,3 +1166,244 @@ func (r *GormWorkItemRepository) LoadByIteration(ctx context.Context, iterationI } return workitems, nil } + +// ChangeWorkItemType changes the workitem in wiStorage to newWIType. Returns +// error if the operation fails +func (r *GormWorkItemRepository) ChangeWorkItemType(ctx context.Context, wiStorage *WorkItemStorage, oldWIType *WorkItemType, newWIType *WorkItemType, spaceID uuid.UUID) error { + allowedWIT, err := r.CheckTypeAndSpaceShareTemplate(ctx, newWIType, spaceID) + if err != nil { + return errs.Wrap(err, "failed to check workitem type") + } + if !allowedWIT { + return errors.NewBadParameterError("typeID", oldWIType.ID) + } + var fieldDiff = Fields{} + // Loop through old workitem type + for oldFieldName := range oldWIType.Fields { + // Temporary workaround to not add metastates to the field diff. We need + // to have a special handling for fields that shouldn't be set by user + // (or affected by type change) MetaState is a system level detail and + // that shouldn't be affected by type change, even if it is affected, it + // shouldn't show up in the field diff. The purpose of + // fieldDiff is to get the list of fields that should be added to the + // description. Metastate shouldn't show up in the description + if oldFieldName == SystemMetaState { + continue + } + // The field exists in old type and new type + if newField, ok := newWIType.Fields[oldFieldName]; ok { + // Try to assign the old value to the new field + _, err := newField.Type.ConvertToModel(wiStorage.Fields[oldFieldName]) + if err != nil { + // if the new type is a list, stuff the old value in a list and + // try to assign it + if newField.Type.GetKind() == KindList { + var convertedValue interface{} + convertedValue, err = newField.Type.ConvertToModel([]interface{}{wiStorage.Fields[oldFieldName]}) + if err == nil { + wiStorage.Fields[oldFieldName] = convertedValue + } + } + // if the old type is a list but the new one isn't check that + // the list contains only one element and assign that + if oldWIType.Fields[oldFieldName].Type.GetKind() == KindList && newField.Type.GetKind() != KindList { + ifArr, ok := wiStorage.Fields[oldFieldName].([]interface{}) + if !ok { + return errs.Errorf("failed to convert field \"%s\" to interface array: %+v", oldFieldName, wiStorage.Fields[oldFieldName]) + } + if len(ifArr) == 1 { + var convertedValue interface{} + convertedValue, err = newField.Type.ConvertToModel(ifArr[0]) + if err == nil { + wiStorage.Fields[oldFieldName] = convertedValue + } + } + } + } + // Failed to assign the old value to the new field. Add the field to + // the diff and remove it from the old workitem. + if err != nil { + fieldDiff[oldFieldName] = wiStorage.Fields[oldFieldName] + delete(wiStorage.Fields, oldFieldName) + } + } else { // field doesn't exist in new type + if wiStorage.Fields[oldFieldName] != nil { + fieldDiff[oldFieldName] = wiStorage.Fields[oldFieldName] + delete(wiStorage.Fields, oldFieldName) + } + } + } + // We need fieldKeys to show field diff in a defined order. Golang maps + // aren't ordered by default. + var fieldKeys []string + for fieldName := range fieldDiff { + fieldKeys = append(fieldKeys, fieldName) + } + // Sort the field keys to prevent random order of fields + sort.Strings(fieldKeys) + // Append diff (fields along with their values) between the workitem types + // to the description + if len(fieldDiff) > 0 { + // If description doesn't exists, assign it empty value + if wiStorage.Fields[SystemDescription] == nil { + wiStorage.Fields[SystemDescription] = "" + } + originalDescription := rendering.NewMarkupContentFromValue(wiStorage.Fields[SystemDescription]) + // TemplateData holds the information to be added to the description + templateData := struct { + NewTypeName string + FieldNameValues map[string]string + OriginalDescription string + }{ + NewTypeName: newWIType.Name, + FieldNameValues: make(map[string]string), + OriginalDescription: originalDescription.Content, + } + + for _, fieldName := range fieldKeys { + fieldDef := oldWIType.Fields[fieldName] + oldKind := fieldDef.Type.GetKind() + oldValue := fieldDiff[fieldName] + + if oldKind == KindEnum { + enumType, ok := fieldDef.Type.(EnumType) + if !ok { + return errs.Errorf("failed to convert field \"%s\" to enum type: %+v", fieldName, fieldDef) + } + oldKind = enumType.BaseType.GetKind() + } + // handle all single value fields (including Enums) + if oldKind != KindList { + var val string + if oldKind.IsRelational() { + val, err = getValueOfRelationalKind(r.db, oldValue, oldKind) + if err != nil { + return errs.Wrapf(err, "failed to get relational value for field %s", fieldName) + } + } else { + val = fmt.Sprint(oldValue) + } + // Add field information to the description + templateData.FieldNameValues[oldWIType.Fields[fieldName].Label] = val + continue + } + + // Deal with multi value field (KindList) + listType, ok := fieldDef.Type.(ListType) + if !ok { + return errs.Errorf("failed to convert field \"%s\" to list type: %+v", fieldName, fieldDef) + } + oldKind = listType.ComponentType.GetKind() + valList, ok := fieldDiff[fieldName].([]interface{}) + if !ok { + return errs.Errorf("failed to convert list value of field \"%s\" to []interface{}: %+v", fieldName, fieldDiff[fieldName]) + } + + var tempList []string + for _, v := range valList { + val := fmt.Sprint(v) + if oldKind.IsRelational() { + val, err = getValueOfRelationalKind(r.db, v, oldKind) + if err != nil { + return errs.Wrapf(err, "failed to get relational value for field %s", fieldName) + } + } + tempList = append(tempList, val) + } + // Convert []string to comma seperated strings and add it to the + // description. + templateData.FieldNameValues[oldWIType.Fields[fieldName].Label] = strings.Join(tempList, ", ") + } + descriptionTemplate := template.Must(template.New("test").Parse("```" + + ` +Missing fields in workitem type: {{ .NewTypeName }} +{{range $index, $element := .FieldNameValues }} +{{$index}} : {{$element}}{{end}} +` + "```" + ` +{{.OriginalDescription}} +`)) + var newDescription bytes.Buffer + if err := descriptionTemplate.Execute(&newDescription, templateData); err != nil { + return errs.Wrap(err, "failed to populate description template") + } + wiStorage.Fields[SystemDescription] = rendering.NewMarkupContent(newDescription.String(), rendering.SystemMarkupMarkdown) + } + // Set default values for all field in newWIType + for fieldName, fieldDef := range newWIType.Fields { + fieldValue := wiStorage.Fields[fieldName] + // Do not assign default value to metastate + if fieldName == SystemMetaState { + continue + } + // Assign default only if fieldValue is nil + wiStorage.Fields[fieldName], err = fieldDef.ConvertToModel(fieldName, fieldValue) + if err != nil { + return errs.Wrapf(err, "failed to convert field \"%s\"", fieldName) + } + } + wiStorage.Type = newWIType.ID + return nil +} + +// getValueOfRelationKind resolves the relational value stored in val to it's +// verbose value. Eg: UUID of kind User to username. +func getValueOfRelationalKind(db *gorm.DB, val interface{}, kind Kind) (string, error) { + var result string + switch kind { + case KindList, KindEnum: + return result, errors.NewInternalErrorFromString("cannot resolve relational value for KindList or KindEnum") + case KindUser: + var identity account.Identity + tx := db.Model(&account.Identity{}).Where("id = ?", val).Find(&identity) + if tx.Error != nil { + return result, errs.Wrap(tx.Error, "failed to find identity") + } + var user account.User + tx = db.Model(&account.User{}).Where("id = ?", identity.UserID).Find(&user) + if tx.Error != nil { + return result, errs.Wrap(tx.Error, "failed to find user") + } + result = fmt.Sprintf("%s (%s)", user.FullName, identity.Username) + case KindArea: + var area area.Area + tx := db.Model(area.TableName()).Where("id = ?", val).First(&area) + if tx.Error != nil { + return result, errs.Wrap(tx.Error, "failed to find area") + } + result = fmt.Sprintf("%s (%s)", area.Name, area.Path) + case KindBoardColumn: + var column BoardColumn + tx := db.Model(column.TableName()).Where("id = ?", val).First(&column) + if tx.Error != nil { + return result, errs.Wrap(tx.Error, "failed to find boardcolumn") + } + result = column.Name + + case KindIteration: + var iteration iteration.Iteration + tx := db.Model(iteration.TableName()).Where("id = ?", val).First(&iteration) + if tx.Error != nil { + return result, errs.Wrap(tx.Error, "failed to find iteration") + } + result = fmt.Sprintf("%s (%s)", iteration.Name, iteration.Path) + + case KindCodebase: + var codebase codebase.Codebase + tx := db.Model(codebase.TableName()).Where("id = ?", val).First(&codebase) + if tx.Error != nil { + return result, errs.Wrap(tx.Error, "failed to find codebase") + } + result = codebase.URL // TODO(ibrahim): Figure out what we should be here. Codebase does not have a name. + + case KindLabel: + var label label.Label + tx := db.Model(label.TableName()).Where("id = ?", val).First(&label) + if tx.Error != nil { + return result, errs.Wrap(tx.Error, "failed to find area") + } + result = label.Name + default: + return result, errors.NewInternalErrorFromString("unknown field Kind") + } + return result, nil +} diff --git a/workitem/workitem_repository_blackbox_test.go b/workitem/workitem_repository_blackbox_test.go index cc79f171b4..37235571db 100644 --- a/workitem/workitem_repository_blackbox_test.go +++ b/workitem/workitem_repository_blackbox_test.go @@ -3,6 +3,7 @@ package workitem_test import ( "context" "fmt" + "strings" "sync" "testing" "time" @@ -108,16 +109,231 @@ func (s *workItemRepoBlackBoxTest) TestSave() { }) s.T().Run("change is not prohibited", func(t *testing.T) { - // tests that you can change the type of a work item. NOTE: This - // functionality only works on the DB layer and is not exposed to REST. // given fxt := tf.NewTestFixture(t, s.DB, tf.WorkItems(1), tf.WorkItemTypes(2)) // when fxt.WorkItems[0].Type = fxt.WorkItemTypes[1].ID newWi, err := s.repo.Save(s.Ctx, fxt.WorkItems[0].SpaceID, *fxt.WorkItems[0], fxt.Identities[0].ID) // then - require.NoError(s.T(), err) - assert.Equal(s.T(), fxt.WorkItemTypes[1].ID, newWi.Type) + require.NoError(t, err) + assert.Equal(t, fxt.WorkItemTypes[1].ID, newWi.Type) + }) + + s.T().Run("change of type along with field is not prohibited", func(t *testing.T) { + // tests that you can change the type of a work item and its fields at the same time. + // NOTE: This functionality only works on the DB layer and is not exposed to REST. + // given + fxt := tf.NewTestFixture(t, s.DB, tf.WorkItems(1, func(fxt *tf.TestFixture, idx int) error { + fxt.WorkItems[idx].Fields[workitem.SystemTitle] = "foo" + return nil + }), tf.WorkItemTypes(2)) + // when + fxt.WorkItems[0].Fields[workitem.SystemTitle] = "bar" + fxt.WorkItems[0].Type = fxt.WorkItemTypes[1].ID + newWi, err := s.repo.Save(s.Ctx, fxt.WorkItems[0].SpaceID, *fxt.WorkItems[0], fxt.Identities[0].ID) + // then + require.NoError(t, err) + assert.Equal(t, fxt.WorkItemTypes[1].ID, newWi.Type) + assert.Equal(t, "bar", newWi.Fields[workitem.SystemTitle]) + }) + + s.T().Run("type change", func(t *testing.T) { + + type testData struct { + name string + + initialValue interface{} + targetValue interface{} + + initialFieldType workitem.FieldType + targetFieldType workitem.FieldType + + fieldConvertible bool + } + + k := workitem.KindString + + td := []testData{ + // valid conversions + {"ok - simple type to simple type", + "foo1", + "foo1", + workitem.SimpleType{Kind: k}, + workitem.SimpleType{Kind: k}, + true}, + {"ok - simple type to list", + "foo2", + []interface{}{"foo2"}, + workitem.SimpleType{Kind: k}, + workitem.ListType{SimpleType: workitem.SimpleType{Kind: workitem.KindList}, ComponentType: workitem.SimpleType{Kind: k}}, + true}, + {"ok - simple type to enum", + "foo3", + "foo3", + workitem.SimpleType{Kind: k}, + workitem.EnumType{SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, BaseType: workitem.SimpleType{Kind: k}, Values: []interface{}{"red", "foo3", "blue"}}, + true}, + {"ok - list to list", + []interface{}{"foo4", "foo5"}, + []interface{}{"foo4", "foo5"}, + workitem.ListType{SimpleType: workitem.SimpleType{Kind: workitem.KindList}, ComponentType: workitem.SimpleType{Kind: k}}, + workitem.ListType{SimpleType: workitem.SimpleType{Kind: workitem.KindList}, ComponentType: workitem.SimpleType{Kind: k}}, + true}, + {"ok - list to simple type", + []interface{}{"foo6"}, + "foo6", + workitem.ListType{SimpleType: workitem.SimpleType{Kind: workitem.KindList}, ComponentType: workitem.SimpleType{Kind: k}}, + workitem.SimpleType{Kind: k}, + true}, + {"ok - list to enum", + []interface{}{"foo7"}, + "foo7", + workitem.ListType{SimpleType: workitem.SimpleType{Kind: workitem.KindList}, ComponentType: workitem.SimpleType{Kind: k}}, + workitem.EnumType{SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, BaseType: workitem.SimpleType{Kind: k}, Values: []interface{}{"yellow", "foo7", "cyan"}}, + true}, + {"ok - enum to enum", + "foo8", + "foo8", + workitem.EnumType{SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, BaseType: workitem.SimpleType{Kind: k}, Values: []interface{}{"Bach", "foo8", "Chapdelaine"}}, + workitem.EnumType{SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, BaseType: workitem.SimpleType{Kind: k}, Values: []interface{}{"Kant", "Hume", "foo8", "Aristoteles"}}, + true}, + {"ok - enum to simple type", + "foo9", + "foo9", + workitem.EnumType{SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, BaseType: workitem.SimpleType{Kind: k}, Values: []interface{}{"Schopenhauer", "foo9", "Duerer"}}, + workitem.SimpleType{Kind: k}, + true}, + {"ok - enum to list", + "foo10", + []interface{}{"foo10"}, + workitem.EnumType{SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, BaseType: workitem.SimpleType{Kind: k}, Values: []interface{}{"Sokrates", "foo10", "Fromm"}}, + workitem.ListType{SimpleType: workitem.SimpleType{Kind: workitem.KindList}, ComponentType: workitem.SimpleType{Kind: k}}, + true}, + // invalid conversions + {"err - simple type (string) to simple type (int)", + "foo11", + nil, + workitem.SimpleType{Kind: workitem.KindString}, + workitem.SimpleType{Kind: workitem.KindInteger}, + false}, + {"err - simple type (string) to list (integer)", + "foo2", + ([]interface{})(nil), + workitem.SimpleType{Kind: k}, + workitem.ListType{SimpleType: workitem.SimpleType{Kind: workitem.KindList}, ComponentType: workitem.SimpleType{Kind: workitem.KindInteger}}, + false}, + {"err - simple type (string) to enum (float)", + "foo3", + 11.1, + workitem.SimpleType{Kind: k}, + workitem.EnumType{SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, BaseType: workitem.SimpleType{Kind: workitem.KindFloat}, Values: []interface{}{11.1, 22.2, 33.3}}, + false}, + {"err - list (string) to list (float)", + []interface{}{"foo4", "foo5"}, + ([]interface{})(nil), + workitem.ListType{SimpleType: workitem.SimpleType{Kind: workitem.KindList}, ComponentType: workitem.SimpleType{Kind: k}}, + workitem.ListType{SimpleType: workitem.SimpleType{Kind: workitem.KindList}, ComponentType: workitem.SimpleType{Kind: workitem.KindFloat}}, + false}, + {"err - list (string) to simple type (int)", + []interface{}{"foo6"}, + nil, + workitem.ListType{SimpleType: workitem.SimpleType{Kind: workitem.KindList}, ComponentType: workitem.SimpleType{Kind: k}}, + workitem.SimpleType{Kind: workitem.KindInteger}, + false}, + {"err - list (string) to enum (float)", + []interface{}{"foo7"}, + 11.1, + workitem.ListType{SimpleType: workitem.SimpleType{Kind: workitem.KindList}, ComponentType: workitem.SimpleType{Kind: k}}, + workitem.EnumType{SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, BaseType: workitem.SimpleType{Kind: workitem.KindFloat}, Values: []interface{}{11.1, 22.2, 33.3}}, + false}, + {"err - enum (string) to enum (float)", + "foo8", + 11.1, + workitem.EnumType{SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, BaseType: workitem.SimpleType{Kind: k}, Values: []interface{}{"Bach", "foo8", "Chapdelaine"}}, + workitem.EnumType{SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, BaseType: workitem.SimpleType{Kind: workitem.KindFloat}, Values: []interface{}{11.1, 22.2, 33.3}}, + false}, + {"err - enum (string) to simple type (float)", + "foo9", + nil, + workitem.EnumType{SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, BaseType: workitem.SimpleType{Kind: k}, Values: []interface{}{"Schopenhauer", "foo9", "Duerer"}}, + workitem.SimpleType{Kind: workitem.KindFloat}, + false}, + {"err - enum (string) to list (float)", + "foo10", + ([]interface{})(nil), + workitem.EnumType{SimpleType: workitem.SimpleType{Kind: workitem.KindEnum}, BaseType: workitem.SimpleType{Kind: k}, Values: []interface{}{"Sokrates", "foo10", "Fromm"}}, + workitem.ListType{SimpleType: workitem.SimpleType{Kind: workitem.KindList}, ComponentType: workitem.SimpleType{Kind: workitem.KindFloat}}, + false}, + } + for _, d := range td { + t.Run(d.name, func(t *testing.T) { + fieldName := d.name + + fxt := tf.NewTestFixture(t, s.DB, + tf.WorkItemTypes(2, func(fxt *tf.TestFixture, idx int) error { + wit := fxt.WorkItemTypes[idx] + switch idx { + case 0: + wit.Fields = workitem.FieldDefinitions{ + fieldName: workitem.FieldDefinition{ + Label: "source field", + Required: false, + Type: d.initialFieldType, + }, + } + case 1: + wit.Fields = workitem.FieldDefinitions{ + fieldName: workitem.FieldDefinition{ + Label: "target field", + Required: false, + Type: d.targetFieldType, + }, + } + } + return nil + }), + tf.WorkItems(1, tf.SetWorkItemField(fieldName, d.initialValue)), + ) + + // Load the work item from the DB and check that the + // initial value was set correctly. We have some special + // treatment for lists here. + loadedWorkItem, err := s.repo.LoadByID(s.Ctx, fxt.WorkItems[0].ID) + require.NoError(t, err) + require.Equal(t, d.initialValue, loadedWorkItem.Fields[fieldName]) + + // when we update the work item type + loadedWorkItem.Type = fxt.WorkItemTypes[1].ID + updatedWorkItem, err := s.repo.Save(s.Ctx, fxt.WorkItems[0].SpaceID, *loadedWorkItem, fxt.Identities[0].ID) + require.NoError(t, err) + + // then check that the error is as expected or that the + // value in the new field type is what we expected. + if !d.fieldConvertible { + rendered := d.initialValue + if d.initialFieldType.GetKind() == workitem.KindList { + ifArr := d.initialValue.(interface{}).([]interface{}) + strArr := make([]string, len(ifArr)) + for i := range ifArr { + strArr[i] = ifArr[i].(string) + } + rendered = strings.Join(strArr, ", ") + } + require.Contains(t, updatedWorkItem.Fields[workitem.SystemDescription].(rendering.MarkupContent).Content, fmt.Sprintf("source field : %+v", rendered)) + } else { + require.NotNil(t, updatedWorkItem) + require.Equal(t, fxt.WorkItemTypes[1].ID, updatedWorkItem.Type) + require.Equal(t, d.targetValue, updatedWorkItem.Fields[fieldName]) + } + + // also check if the values are the same when work item is + // loaded + loadedWorkItem, err = s.repo.LoadByID(s.Ctx, fxt.WorkItems[0].ID) + require.NoError(t, err) + require.Equal(t, fxt.WorkItemTypes[1].ID, loadedWorkItem.Type) + require.Equal(t, d.targetValue, loadedWorkItem.Fields[fieldName]) + }) + } }) } diff --git a/workitem/workitemtype.go b/workitem/workitemtype.go index 491d315da0..2541be987c 100644 --- a/workitem/workitemtype.go +++ b/workitem/workitemtype.go @@ -1,13 +1,14 @@ package workitem import ( + "reflect" "strings" "time" "github.com/fabric8-services/fabric8-wit/convert" "github.com/fabric8-services/fabric8-wit/gormsupport" - "github.com/pkg/errors" + errs "github.com/pkg/errors" uuid "github.com/satori/go.uuid" ) @@ -36,6 +37,7 @@ const ( SystemCodebase = "system.codebase" SystemLabels = "system.labels" SystemBoardcolumns = "system.boardcolumns" + SystemMetaState = "system.metastate" SystemBoard = "Board" @@ -111,6 +113,18 @@ type WorkItemType struct { ChildTypeIDs []uuid.UUID `gorm:"-" json:"child_types,omitempty"` } +// Validate runs some checks on the work item type to ensure the field +// definitions make sense. +func (wit WorkItemType) Validate() error { + if strings.TrimSpace(wit.Name) == "" { + return errs.Errorf(`work item type name "%s" when trimmed has a zero-length`, wit.Name) + } + if err := wit.Fields.Validate(); err != nil { + return errs.Wrapf(err, "failed to validate work item type's fields") + } + return nil +} + // GetTypePathSeparator returns the work item type's path separator "." func GetTypePathSeparator() string { return pathSep @@ -177,7 +191,7 @@ func (wit WorkItemType) Equal(u convert.Equaler) bool { if wit.CanConstruct != other.CanConstruct { return false } - if !strPtrIsNilOrContentIsEqual(wit.Description, other.Description) { + if !reflect.DeepEqual(wit.Description, other.Description) { return false } if wit.Icon != other.Icon { @@ -231,7 +245,7 @@ func (wit WorkItemType) ConvertWorkItemStorageToModel(workItem WorkItemStorage) } result.Fields[name], err = field.ConvertFromModel(name, workItem.Fields[name]) if err != nil { - return nil, errors.WithStack(err) + return nil, errs.WithStack(err) } result.Fields[SystemOrder] = workItem.ExecutionOrder } From 34c95bbbe2a736038ece4cab9c491f971be7eff9 Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Wed, 29 Aug 2018 15:06:01 -0400 Subject: [PATCH 16/36] move perms to /api/spaces --- Makefile | 10 +++ controller/deployments.go | 63 ++++++++++++++----- controller/deployments_osioclient.go | 4 +- controller/deployments_osioclient_test.go | 2 +- controller/space.go | 74 ++++++++++++++++++++++- design/deployments.go | 2 - design/spaces.go | 2 + 7 files changed, 135 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index c164c53f22..2f047bb420 100644 --- a/Makefile +++ b/Makefile @@ -317,6 +317,16 @@ regenerate: clean-generated generate dev: prebuild-check deps generate $(FRESH_BIN) docker-compose-up F8_DEVELOPER_MODE_ENABLED=true $(FRESH_BIN) + +.PHONY: dev-pp +dev-pp: prebuild-check deps generate $(FRESH_BIN) docker-compose-up + FABRIC8_WIT_API_URL=https://api.prod-preview.openshift.io F8_CONFIG_FILE_PATH=jstconfig-pp.yaml F8_DEVELOPER_MODE_ENABLED=true $(FRESH_BIN) + +.PHONY: dev-prod +dev-prod: prebuild-check deps generate $(FRESH_BIN) docker-compose-up + FABRIC8_WIT_API_URL=https://api.openshift.io F8_CONFIG_FILE_PATH=jstconfig-prod.yaml F8_DEVELOPER_MODE_ENABLED=true $(FRESH_BIN) + + .PHONY: docker-compose-up docker-compose-up: ifeq ($(UNAME_S),Darwin) diff --git a/controller/deployments.go b/controller/deployments.go index f8a00e6fb1..8141726073 100644 --- a/controller/deployments.go +++ b/controller/deployments.go @@ -3,23 +3,19 @@ package controller import ( "context" "encoding/json" - "fmt" "io" "net/url" "os" "time" "github.com/fabric8-services/fabric8-wit/app" - witclient "github.com/fabric8-services/fabric8-wit/client" "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/fabric8-services/fabric8-wit/rest" "github.com/goadesign/goa" - goauuid "github.com/goadesign/goa/uuid" errs "github.com/pkg/errors" uuid "github.com/satori/go.uuid" "golang.org/x/net/websocket" @@ -336,12 +332,46 @@ func (c *DeploymentsController) ShowDeploymentStats(ctx *app.ShowDeploymentStats // ShowSpace runs the showSpace action. func (c *DeploymentsController) ShowSpace(ctx *app.ShowSpaceDeploymentsContext) error { + // TODO - get from ctx + //checkPerms := true + kc, err := c.GetKubeClient(ctx) defer cleanup(kc) if err != nil { return jsonapi.JSONErrorResponse(ctx, err) } + /**** + guid := goauuid.UUID(ctx.SpaceID) + spaceURLStr := rest.AbsoluteURL(ctx.Request, fmt.Sprintf(witclient.ShowSpacePath(guid))) + + if checkPerms { + canRead, err := kc.CanGetSpace() + if err != nil { + return jsonapi.JSONErrorResponse(ctx, err) + } + if !canRead { + // return a non-space with empty permissions + emptySpace := &app.SimpleSpace{ + ID: ctx.SpaceID, + Type: "space", + Links: &app.SimpleSpaceLinks{ + Space: &app.LinkWithAccess{ + Href: &spaceURLStr, + Meta: &app.EndpointAccess{ + Methods: []string{}, + }, + }, + }, + } + res := &app.SimpleSpaceSingle{ + Data: emptySpace, + } + + return ctx.OK(res) + } + } + **/ kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) if err != nil || kubeSpaceName == nil { return jsonapi.JSONErrorResponse(ctx, errors.NewNotFoundError("osio space", ctx.SpaceID.String())) @@ -358,17 +388,22 @@ func (c *DeploymentsController) ShowSpace(ctx *app.ShowSpaceDeploymentsContext) // Kubernetes doesn't know about space ID, so add it here space.ID = ctx.SpaceID - guid := goauuid.UUID(ctx.SpaceID) - spaceURLStr := rest.AbsoluteURL(ctx.Request, fmt.Sprintf(witclient.ShowSpacePath(guid))) - space.Links = &app.SimpleSpaceLinks{ - Space: &app.LinkWithAccess{ - Href: &spaceURLStr, - Meta: &app.EndpointAccess{ - Methods: []string{"GET", "POST", "DELETE", "PATCH"}, - }, - }, - } + /** + // next, try to get permissions + allowedMethods := []string{"GET"} + if err != nil { + return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve space %s", *kubeSpaceName)) + } + space.Links = &app.SimpleSpaceLinks{ + Space: &app.LinkWithAccess{ + Href: &spaceURLStr, + Meta: &app.EndpointAccess{ + Methods: []string{"GET", "POST", "DELETE", "PATCH"}, + }, + }, + } + ***/ res := &app.SimpleSpaceSingle{ Data: space, } diff --git a/controller/deployments_osioclient.go b/controller/deployments_osioclient.go index 52609789a1..027e836606 100644 --- a/controller/deployments_osioclient.go +++ b/controller/deployments_osioclient.go @@ -37,7 +37,7 @@ 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) + ShowSpace(ctx context.Context, path string, qp *bool, ifModifiedSince *string, ifNoneMatch *string) (*http.Response, error) ShowUserService(ctx context.Context, path string) (*http.Response, error) } @@ -141,7 +141,7 @@ func (osioclient *OSIOClient) GetUserServices(ctx context.Context) (*app.UserSer 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) + resp, err := osioclient.wc.ShowSpace(goasupport.ForwardContextRequestID(ctx), urlpath, nil, nil, nil) if err != nil { return nil, errs.Wrapf(err, "could not connect to %s", urlpath) } diff --git a/controller/deployments_osioclient_test.go b/controller/deployments_osioclient_test.go index 28bc7af836..10dfa0f6b1 100644 --- a/controller/deployments_osioclient_test.go +++ b/controller/deployments_osioclient_test.go @@ -42,7 +42,7 @@ type MockWitClient struct { UserServiceHttpResponseError error } -func (m *MockWitClient) ShowSpace(ctx context.Context, path string, ifModifiedSince *string, ifNoneMatch *string) (*http.Response, error) { +func (m *MockWitClient) ShowSpace(ctx context.Context, path string, qp *bool, ifModifiedSince *string, ifNoneMatch *string) (*http.Response, error) { return m.SpaceHttpResponse, m.SpaceHttpResponseError } diff --git a/controller/space.go b/controller/space.go index 4bc1983aef..86d2c733fa 100644 --- a/controller/space.go +++ b/controller/space.go @@ -48,13 +48,14 @@ type SpaceController struct { resourceManager auth.ResourceManager DeploymentsClient *http.Client CodebaseClient *http.Client + ClientGetter } // NewSpaceController creates a space controller. func NewSpaceController( service *goa.Service, db application.DB, - config SpaceConfiguration, + config *configuration.Registry, resourceManager auth.ResourceManager) *SpaceController { return &SpaceController{ @@ -64,6 +65,9 @@ func NewSpaceController( resourceManager: resourceManager, DeploymentsClient: http.DefaultClient, CodebaseClient: http.DefaultClient, + ClientGetter: &defaultClientGetter{ + config: config, + }, } } @@ -470,6 +474,11 @@ func (c *SpaceController) List(ctx *app.ListSpaceContext) error { // Show runs the show action. func (c *SpaceController) Show(ctx *app.ShowSpaceContext) error { var s *space.Space + s = &space.Space{ + Name: "fakespacename", + } + + /** err := application.Transactional(c.db, func(appl application.Application) error { var err error s, err = appl.Spaces().Load(ctx.Context, ctx.SpaceID) @@ -484,8 +493,45 @@ func (c *SpaceController) Show(ctx *app.ShowSpaceContext) error { if err != nil { return jsonapi.JSONErrorResponse(ctx, err) } + ***/ + var methods []string + if ctx.Qp != nil && *ctx.Qp { + // 'qp' (QueryPerms query parameter) is true: + // ask Kubernetes if tis user can access this space + // (this is different from the WIT Space database access) + kc, err := c.GetKubeClient(ctx) + defer cleanup(kc) + if err != nil { + log.Error(ctx, map[string]interface{}{ + "err": err, + "space_id": ctx.SpaceID, + }, "unable create a KubeClient") + return jsonapi.JSONErrorResponse(ctx, err) + } + canRead, err := kc.CanGetSpace() + if err != nil { + log.Error(ctx, map[string]interface{}{ + "err": err, + "space_id": ctx.SpaceID, + }, "unable retrieve permissions from CanGetSpace()") + return jsonapi.JSONErrorResponse(ctx, err) + } + if !canRead { + methods = []string{} + } + methods = []string{"GET", "POST", "DELETE", "PATCH"} + } else { + methods = []string{} + } + return ctx.ConditionalRequest(*s, c.config.GetCacheControlSpace, func() error { - spaceData, err := ConvertSpaceFromModel(ctx.Request, *s, IncludeBacklogTotalCount(ctx.Context, c.db)) + var spaceData *app.Space + var err error + if ctx.Qp != nil && *ctx.Qp { + spaceData, err = ConvertSpaceFromModel(ctx.Request, *s /*IncludeBacklogTotalCount(ctx.Context, c.db),*/, IncludeMethodAccess(ctx.Context, ctx.Request, methods)) + } else { + spaceData, err = ConvertSpaceFromModel(ctx.Request, *s, IncludeBacklogTotalCount(ctx.Context, c.db)) + } if err != nil { log.Error(ctx, map[string]interface{}{ "err": err, @@ -626,7 +672,7 @@ func ConvertSpaceToModel(appSpace app.Space) space.Space { // conversion from internal to API type SpaceConvertFunc func(*http.Request, *space.Space, *app.Space) error -// IncludeBacklog returns a SpaceConvertFunc that includes the a link to the backlog +// IncludeBacklogTotalCount returns a SpaceConvertFunc that includes the a link to the backlog // along with the total count of items in the backlog of the current space func IncludeBacklogTotalCount(ctx context.Context, db application.DB) SpaceConvertFunc { return func(req *http.Request, modelSpace *space.Space, appSpace *app.Space) error { @@ -640,6 +686,22 @@ func IncludeBacklogTotalCount(ctx context.Context, db application.DB) SpaceConve } } +// IncludeMethodAccess returns a SpaceConvertFunc that includes method access metadata +// along with the total count of items in the backlog of the current space +func IncludeMethodAccess(ctx context.Context, req *http.Request, perms []string) SpaceConvertFunc { + return func(req *http.Request, modelSpace *space.Space, appSpace *app.Space) error { + spaceIDStr := modelSpace.ID.String() + relatedDeployments := rest.AbsoluteURL(req, fmt.Sprintf("/api/deployments/spaces/%s", spaceIDStr)) + appSpace.Links.Deployments = &app.LinkWithAccess{ + Href: &relatedDeployments, + Meta: &app.EndpointAccess{ + Methods: perms, + }, + } + return nil + } +} + // ConvertSpacesFromModel converts between internal and external REST representation func ConvertSpacesFromModel(request *http.Request, spaces []space.Space, additional ...SpaceConvertFunc) ([]*app.Space, error) { var result = make([]*app.Space, len(spaces)) @@ -656,6 +718,12 @@ func ConvertSpacesFromModel(request *http.Request, spaces []space.Space, additio // ConvertSpaceFromModel converts between internal and external REST representation func ConvertSpaceFromModel(request *http.Request, sp space.Space, options ...SpaceConvertFunc) (*app.Space, error) { selfURL := rest.AbsoluteURL(request, app.SpaceHref(sp.ID)) + /** selfWithPerms := &app.LinkWithAccess{ + Href: &selfURL, + Meta: &app.EndpointAccess{ + Methods: []string{"GET", "POST", "DELETE", "PATCH"}, + }, + }**/ spaceIDStr := sp.ID.String() relatedIterations := rest.AbsoluteURL(request, fmt.Sprintf("/api/spaces/%s/iterations", spaceIDStr)) relatedAreas := rest.AbsoluteURL(request, fmt.Sprintf("/api/spaces/%s/areas", spaceIDStr)) diff --git a/design/deployments.go b/design/deployments.go index 08ef85904c..bdb4321b9c 100644 --- a/design/deployments.go +++ b/design/deployments.go @@ -16,7 +16,6 @@ var simpleSpace = a.Type("SimpleSpace", func() { a.Example("40bbdd3d-8b5d-4fd6-ac90-7236b669af04") }) a.Attribute("attributes", simpleSpaceAttributes) - a.Attribute("links", simpleSpaceLinks) a.Required("type", "id", "attributes") }) @@ -68,7 +67,6 @@ var genericLinksForDeployment = a.Type("GenericLinksForDeployment", func() { a.Attribute("logs", d.String) a.Attribute("application", d.String) a.Attribute("self", linkWithAccess) - //a.Required("self") }) var simpleDeploymentAttributes = a.Type("SimpleDeploymentAttributes", func() { diff --git a/design/spaces.go b/design/spaces.go index a4dc62d280..473e9d3a83 100644 --- a/design/spaces.go +++ b/design/spaces.go @@ -20,6 +20,7 @@ var space = a.Type("Space", func() { var genericLinksForSpace = a.Type("GenericLinksForSpace", func() { a.Attribute("self", d.String) + a.Attribute("deployments", linkWithAccess) a.Attribute("related", d.String) a.Attribute("backlog", backlogGenericLinkType, `URL to the backlog work items`) a.Attribute("meta", a.HashOf(d.String, d.Any)) @@ -123,6 +124,7 @@ var _ = a.Resource("space", func() { a.Description("Retrieve space (as JSONAPI) for the given ID.") a.Params(func() { a.Param("spaceID", d.UUID, "ID of the space") + a.Param("qp", d.Boolean, "if true, query and return permissions for this space") }) a.UseTrait("conditional") a.Response(d.OK, spaceSingle) From afae2f4afe5b5a9453e9a6982751d87a667dd787 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Tue, 24 Jul 2018 17:48:28 -0400 Subject: [PATCH 17/36] Initial implementation of OpenShift authz checking --- kubernetes/deployments_access.go | 240 + .../deployments_access_blackbox_test.go | 47 + kubernetes/deployments_kubeclient.go | 77 +- test/kubernetes/can-i.yaml | 8479 +++++++++++++++++ 4 files changed, 8819 insertions(+), 24 deletions(-) create mode 100644 kubernetes/deployments_access.go create mode 100644 kubernetes/deployments_access_blackbox_test.go create mode 100644 test/kubernetes/can-i.yaml diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go new file mode 100644 index 0000000000..7d5c13a48c --- /dev/null +++ b/kubernetes/deployments_access.go @@ -0,0 +1,240 @@ +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" +) + +type KubeAccessControl interface { + //CanGetSpace() (bool, error) + //CanGetApplication() (bool, error) + //CanGetDeployment() (bool, error) + //CanScaleDeployment(envName string) (bool, error) FIXME How will this work? Need deployment name? + //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{} + +// Checks the subject rules review for the desired actions on resources +func (rulesMap accessRules) isAuthorized(reqs []*requestedAccess) bool { + for _, req := range reqs { + // Look up rules for resource type + rules, pres := rulesMap[req.resource] + if !pres { + return false + } + // Check if all requested actions are permitted + for _, verb := range req.verbs { + _, pres := rules[verb] + if !pres { + return false + } + } + } + return true +} + +var getEnvironmentRules = []*requestedAccess{ + {qualifiedResource{"", "resourcequotas"}, []string{verbList, verbGet}}, +} + +func (kc *kubeClient) CanGetEnvironments() (bool, error) { + for envName := range kc.envMap { + ok, err := kc.CanGetEnvironment(envName) + if err != nil { + return false, err + } else if !ok { + return false, nil + } + } + return true, nil +} + +func (kc *kubeClient) CanGetEnvironment(envName string) (bool, error) { + rules, err := kc.getRulesForEnvironment(envName) + if err != nil { + return false, err + } + + ok := rules.isAuthorized(getEnvironmentRules) + return ok, nil +} + +// 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 + } + + // TODO Parse using info from https://github.com/openshift/api/blob/master/authorization/v1/types.go + status, ok := reviewResult["status"].(map[string]interface{}) + if !ok { + log.Error(nil, map[string]interface{}{ + "err": err, + "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{}{ + "err": err, + "namespace": namespace, + "response": reviewResult, + }, "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{}{ + "err": err, + "namespace": namespace, + "response": reviewResult, + }, "rules missing from SelfSubjectRulesReview") + 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 { + // If no groups are specified, the rule is for the default k8s/OpenShift API group + 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, 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 new file mode 100644 index 0000000000..356b9d907e --- /dev/null +++ b/kubernetes/deployments_access_blackbox_test.go @@ -0,0 +1,47 @@ +package kubernetes_test + +import ( + "testing" + + "github.com/dnaeon/go-vcr/recorder" + "github.com/stretchr/testify/require" +) + +func TestCanGetEnvironments(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + cassetteName: "can-i", + expectedResult: 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.CanGetEnvironments() + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go index 294f6b173e..da6ae95fb5 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -81,6 +81,7 @@ type KubeClientInterface interface { GetMetricsClient(envNS string) (Metrics, error) WatchEventsInNamespace(nameSpace string) (*cache.FIFO, chan struct{}) Close() + KubeAccessControl } type kubeClient struct { @@ -89,6 +90,7 @@ type kubeClient struct { BaseURLProvider KubeRESTAPI metricsMap map[string]Metrics + rulesMap map[string]*accessRules OpenShiftRESTAPI MetricsGetter } @@ -108,11 +110,12 @@ 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) 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{}) 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) 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 { @@ -191,9 +194,20 @@ func NewKubeClient(config *KubeClientConfig) (KubeClientInterface, error) { KubeRESTAPI: kubeAPI, OpenShiftRESTAPI: osAPI, metricsMap: make(map[string]Metrics), + rulesMap: make(map[string]*accessRules), MetricsGetter: config.MetricsGetter, } + rules, err := kubeClient.lookupAllRules(config.UserNamespace) // XXX + if err != nil { + return nil, err + } + fmt.Printf("%v\n", rules) // XXX + canGetEnv, err := kubeClient.CanGetEnvironment("run") + if err != nil { + return nil, err + } + fmt.Printf("CanGetEnvironment %v\n", canGetEnv) return kubeClient, nil } @@ -375,7 +389,7 @@ func (kc *kubeClient) ScaleDeployment(spaceName string, appName string, envName } spec["replicas"] = deployNumber - err = kc.SetDeploymentConfigScale(envNS, dcName, scale) + _, err = kc.SetDeploymentConfigScale(envNS, dcName, scale) if err != nil { return nil, err } @@ -396,7 +410,8 @@ func (oc *openShiftAPIClient) GetDeploymentConfigScale(namespace string, name st return oc.getResource(dcScalePath, false) } -func (oc *openShiftAPIClient) SetDeploymentConfigScale(namespace string, name string, scale map[string]interface{}) error { +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) } @@ -766,10 +781,10 @@ func (kc *kubeClient) getEnvironmentNamespace(envName string) (string, error) { } // 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{}) error { +func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody interface{}) (map[string]interface{}, error) { url, err := oc.config.GetAPIURL() if err != nil { - return err + return nil, err } fullURL := strings.TrimSuffix(*url, "/") + path @@ -779,8 +794,8 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i "err": err, "url": fullURL, "request_body": reqBody, - }, "could not marshall %s request", method) - return errs.WithStack(err) + }, "could not marshal %s request", method) + return nil, errs.WithStack(err) } req, err := http.NewRequest(method, fullURL, bytes.NewBuffer(marshalled)) @@ -790,12 +805,12 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i "url": fullURL, "request_body": reqBody, }, "could not create %s request", method) - return errs.WithStack(err) + return nil, errs.WithStack(err) } token, err := oc.config.GetAPIToken() if err != nil { - return err + return nil, err } req.Header.Set("Content-Type", "application/json") req.Header.Set("Accept", "application/json") @@ -808,7 +823,7 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i "url": fullURL, "request_body": reqBody, }, "could not perform %s request", method) - return errs.WithStack(err) + return nil, errs.WithStack(err) } defer resp.Body.Close() @@ -820,12 +835,12 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i "url": fullURL, "request_body": reqBody, }, "could not read response from %s request", method) - return errs.WithStack(err) + return nil, errs.WithStack(err) } respBody := buf.Bytes() status := resp.StatusCode - if status != http.StatusOK { + if status < http.StatusOK || status > http.StatusPartialContent { log.Error(nil, map[string]interface{}{ "url": fullURL, "request_body": reqBody, @@ -836,11 +851,23 @@ func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody i // If response contains a Kubernetes Status object, create a StatusError err = parseErrorFromStatus(respBody) if err != nil { - return convertError(errs.WithStack(err), "failed to %s url %s due to status code %d", method, fullURL, status) + return nil, convertError(errs.WithStack(err), "failed to %s url %s due to status code %d", method, fullURL, status) } - return errs.Errorf("failed to %s url %s: status code %d", method, fullURL, status) + return nil, errs.Errorf("failed to %s url %s: status code %d", method, fullURL, status) } - return nil + + 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) { @@ -1053,17 +1080,18 @@ func (kc *kubeClient) deleteDeploymentConfig(spaceName string, dcName string, na }, PropagationPolicy: &policy, } - err = kc.DeleteDeploymentConfig(namespace, dcName, opts) + // 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) error { +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) - // API states this should return a Status object, but it returns the DC instead, - // just check for no HTTP error return oc.sendResource(dcPath, "DELETE", opts) } @@ -2020,7 +2048,7 @@ func (kc *kubeClient) deleteRoutes(appLabel string, envNS string) error { // 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) + _, err := kc.DeleteRoute(envNS, name, opts) if err != nil { return err } @@ -2028,7 +2056,8 @@ func (kc *kubeClient) deleteRoutes(appLabel string, envNS string) error { return nil } -func (oc *openShiftAPIClient) DeleteRoute(namespace string, name string, opts *metaV1.DeleteOptions) error { +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 @@ -2079,7 +2108,7 @@ func (oc *openShiftAPIClient) getResource(path string, allowMissing bool) (map[s status := resp.StatusCode if status == http.StatusNotFound && allowMissing { return nil, nil - } else if status != http.StatusOK { + } else if status < http.StatusOK || status > http.StatusPartialContent { log.Error(nil, map[string]interface{}{ "url": fullURL, "response_body": buf, diff --git a/test/kubernetes/can-i.yaml b/test/kubernetes/can-i.yaml new file mode 100644 index 0000000000..a8e37bb7fa --- /dev/null +++ b/test/kubernetes/can-i.yaml @@ -0,0 +1,8479 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + headers: + Content-Type: + - application/json;charset=UTF-8 + status: 200 OK + code: 200 From 989e0361be4a363ec4096c9b296d7c8b4eba7174 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Thu, 26 Jul 2018 16:55:08 -0400 Subject: [PATCH 18/36] Remove unused interactions in delete cassettes --- .../deletedeployment-badroutes.yaml | 646 ------------------ .../deletedeployment-badservices.yaml | 646 ------------------ .../deletedeployment-delete-dc-error.yaml | 646 ------------------ .../deletedeployment-delete-routes-error.yaml | 646 ------------------ .../deletedeployment-delete-svc-error.yaml | 646 ------------------ .../deletedeployment-get-dc-error.yaml | 646 ------------------ .../deletedeployment-get-routes-error.yaml | 646 ------------------ .../deletedeployment-get-svc-error.yaml | 646 ------------------ .../kubernetes/deletedeployment-nobuilds.yaml | 646 ------------------ test/kubernetes/deletedeployment-nodc.yaml | 646 ------------------ .../kubernetes/deletedeployment-noroutes.yaml | 646 ------------------ .../deletedeployment-noservices.yaml | 646 ------------------ .../deletedeployment-wrongspace.yaml | 646 ------------------ test/kubernetes/deletedeployment.yaml | 646 ------------------ 14 files changed, 9044 deletions(-) diff --git a/test/kubernetes/deletedeployment-badroutes.yaml b/test/kubernetes/deletedeployment-badroutes.yaml index 06f0f09729..84d3885d50 100644 --- a/test/kubernetes/deletedeployment-badroutes.yaml +++ b/test/kubernetes/deletedeployment-badroutes.yaml @@ -696,652 +696,6 @@ interactions: - application/json;charset=UTF-8 status: 418 I'm a teapot code: 418 - # 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: "" diff --git a/test/kubernetes/deletedeployment-badservices.yaml b/test/kubernetes/deletedeployment-badservices.yaml index 05c818fad2..94aa4602c6 100644 --- a/test/kubernetes/deletedeployment-badservices.yaml +++ b/test/kubernetes/deletedeployment-badservices.yaml @@ -696,652 +696,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-delete-dc-error.yaml b/test/kubernetes/deletedeployment-delete-dc-error.yaml index 570e14fb21..5b6c5559b3 100644 --- a/test/kubernetes/deletedeployment-delete-dc-error.yaml +++ b/test/kubernetes/deletedeployment-delete-dc-error.yaml @@ -546,652 +546,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-delete-routes-error.yaml b/test/kubernetes/deletedeployment-delete-routes-error.yaml index 6546aa387c..3da7e75a36 100644 --- a/test/kubernetes/deletedeployment-delete-routes-error.yaml +++ b/test/kubernetes/deletedeployment-delete-routes-error.yaml @@ -691,652 +691,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-delete-svc-error.yaml b/test/kubernetes/deletedeployment-delete-svc-error.yaml index 96dc76ec6f..079a3c436e 100644 --- a/test/kubernetes/deletedeployment-delete-svc-error.yaml +++ b/test/kubernetes/deletedeployment-delete-svc-error.yaml @@ -741,652 +741,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-get-dc-error.yaml b/test/kubernetes/deletedeployment-get-dc-error.yaml index e64d003aea..cfdfc2cec5 100644 --- a/test/kubernetes/deletedeployment-get-dc-error.yaml +++ b/test/kubernetes/deletedeployment-get-dc-error.yaml @@ -546,652 +546,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-get-routes-error.yaml b/test/kubernetes/deletedeployment-get-routes-error.yaml index c4b66c6ca6..d1f6bed3b9 100644 --- a/test/kubernetes/deletedeployment-get-routes-error.yaml +++ b/test/kubernetes/deletedeployment-get-routes-error.yaml @@ -691,652 +691,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-get-svc-error.yaml b/test/kubernetes/deletedeployment-get-svc-error.yaml index 1054bc31af..feaeb28e93 100644 --- a/test/kubernetes/deletedeployment-get-svc-error.yaml +++ b/test/kubernetes/deletedeployment-get-svc-error.yaml @@ -741,652 +741,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-nobuilds.yaml b/test/kubernetes/deletedeployment-nobuilds.yaml index 637a0f1884..1b70cb45f4 100644 --- a/test/kubernetes/deletedeployment-nobuilds.yaml +++ b/test/kubernetes/deletedeployment-nobuilds.yaml @@ -613,652 +613,6 @@ interactions: - 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": "myApp-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myApp", - "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\":\"myApp\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myApp\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myApp\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"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\"}},\"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\":[\"myApp\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myApp:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myApp\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myApp\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"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\"}},\"spec\":{\"containers\":[{\"name\":\"myApp\",\"image\":\"127.0.0.1:5000/my-run/myApp@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": "myApp", - "group": "myGroup", - "openshift.io/deployment-config.name": "myApp", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myApp-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myApp", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myApp-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myApp", - "deployment": "myApp-1", - "deploymentconfig": "myApp", - "group": "myGroup", - "provider": "fabric8" - }, - "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", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myApp", - "openshift.io/deployment.name": "myApp-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myApp", - "deployment": "myApp-1", - "deploymentconfig": "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 - } - } - }, - "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/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", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myApp-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myApp; cpu limit for container myApp", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myApp", - "openshift.io/deployment.name": "myApp-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myApp-1-", - "labels": { - "app": "myApp", - "deployment": "myApp-1", - "deploymentconfig": "myApp", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myApp-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myApp-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myApp-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/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "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": { - "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/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myApp", - "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/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", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myApp-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myApp; cpu limit for container myApp", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myApp", - "openshift.io/deployment.name": "myApp-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myApp-1-", - "labels": { - "app": "myApp", - "deployment": "myApp-1", - "deploymentconfig": "myApp", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myApp-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myApp-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myApp-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/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "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": { - "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/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myApp", - "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: "" diff --git a/test/kubernetes/deletedeployment-nodc.yaml b/test/kubernetes/deletedeployment-nodc.yaml index 515950ce3a..42d664d199 100644 --- a/test/kubernetes/deletedeployment-nodc.yaml +++ b/test/kubernetes/deletedeployment-nodc.yaml @@ -492,652 +492,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-noroutes.yaml b/test/kubernetes/deletedeployment-noroutes.yaml index 46d4c5f484..eae8d83efc 100644 --- a/test/kubernetes/deletedeployment-noroutes.yaml +++ b/test/kubernetes/deletedeployment-noroutes.yaml @@ -571,652 +571,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-noservices.yaml b/test/kubernetes/deletedeployment-noservices.yaml index 0a8f64d4bc..526e7197cd 100644 --- a/test/kubernetes/deletedeployment-noservices.yaml +++ b/test/kubernetes/deletedeployment-noservices.yaml @@ -696,652 +696,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment-wrongspace.yaml b/test/kubernetes/deletedeployment-wrongspace.yaml index 12ade05e30..df4df9274e 100644 --- a/test/kubernetes/deletedeployment-wrongspace.yaml +++ b/test/kubernetes/deletedeployment-wrongspace.yaml @@ -696,652 +696,6 @@ interactions: - 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: "" diff --git a/test/kubernetes/deletedeployment.yaml b/test/kubernetes/deletedeployment.yaml index a02f44aae5..3fe9c042cf 100644 --- a/test/kubernetes/deletedeployment.yaml +++ b/test/kubernetes/deletedeployment.yaml @@ -696,652 +696,6 @@ interactions: - 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: "" From 92d1a874cbdccd1f485fe8f88720291af8669aae Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Fri, 27 Jul 2018 16:42:33 -0400 Subject: [PATCH 19/36] Add CanDeploy to filter deployable environments, maintain full list in kubeClient --- controller/deployments_urlprovider.go | 15 ++++------- kubernetes/deployments_kubeclient.go | 25 +++++++++++-------- .../deployments_kubeclient_blackbox_test.go | 9 +++++++ .../deployments_kubeclient_whitebox_test.go | 4 +++ 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/controller/deployments_urlprovider.go b/controller/deployments_urlprovider.go index fded9e35ef..42dab66c6d 100644 --- a/controller/deployments_urlprovider.go +++ b/controller/deployments_urlprovider.go @@ -199,23 +199,18 @@ func (up *tenantURLProvider) GetEnvironmentMapping() map[string]string { log.Error(nil, map[string]interface{}{ "namespace": envNS, }, "namespace has no type") - } else if !isInternalNamespace(*envName) { - result[*envName] = envNS } } return result } // Types of namespaces where the user does not deploy applications -var internalNamespaceTypes = []string{"user", "che", "jenkins"} +var internalNamespaceTypes = map[string]struct{}{"user": {}, "che": {}, "jenkins": {}} -func isInternalNamespace(envType string) bool { - for _, internalType := range internalNamespaceTypes { - if envType == internalType { - return true - } - } - return false +// CanDeploy returns true if the environment type provided can be deployed to as part of a pipeline +func CanDeploy(envType string) bool { + _, pres := internalNamespaceTypes[envType] + return !pres } func (up *tenantURLProvider) GetAPIToken() (*string, error) { diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go index da6ae95fb5..2e26f54034 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -146,6 +146,7 @@ type route struct { // 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) @@ -327,11 +328,13 @@ func (kc *kubeClient) GetApplication(spaceName string, appName string) (*app.Sim // Get all deployments of this app for each environment in this space deployments := []*app.SimpleDeployment{} for envName := range kc.envMap { - deployment, err := kc.GetDeployment(spaceName, appName, envName) - if err != nil { - return nil, err - } else if deployment != nil { - deployments = append(deployments, deployment) + 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) + } } } @@ -677,11 +680,13 @@ func (kc *kubeClient) DeleteDeployment(spaceName string, appName string, envName func (kc *kubeClient) GetEnvironments() ([]*app.SimpleEnvironment, error) { envs := []*app.SimpleEnvironment{} for envName := range kc.envMap { - env, err := kc.GetEnvironment(envName) - if err != nil { - return nil, err + if kc.CanDeploy(envName) { + env, err := kc.GetEnvironment(envName) + if err != nil { + return nil, err + } + envs = append(envs, env) } - envs = append(envs, env) } return envs, nil } @@ -774,7 +779,7 @@ func (oc *openShiftAPIClient) GetBuildConfigs(namespace string, labelSelector st func (kc *kubeClient) getEnvironmentNamespace(envName string) (string, error) { envNS, pres := kc.envMap[envName] - if !pres { + if !pres || !kc.CanDeploy(envName) { return "", errs.Errorf("unknown environment: %s", envName) } return envNS, nil diff --git a/kubernetes/deployments_kubeclient_blackbox_test.go b/kubernetes/deployments_kubeclient_blackbox_test.go index bb324b149e..cbc6909f39 100644 --- a/kubernetes/deployments_kubeclient_blackbox_test.go +++ b/kubernetes/deployments_kubeclient_blackbox_test.go @@ -1616,6 +1616,15 @@ func modifyURL(apiURLStr string, prefix string, path string) (*url.URL, error) { 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 diff --git a/kubernetes/deployments_kubeclient_whitebox_test.go b/kubernetes/deployments_kubeclient_whitebox_test.go index f2802ddcb3..f479430e71 100644 --- a/kubernetes/deployments_kubeclient_whitebox_test.go +++ b/kubernetes/deployments_kubeclient_whitebox_test.go @@ -306,3 +306,7 @@ func (up *testURLProvider) GetEnvironmentMapping() map[string]string { "stage": "my-stage", } } + +func (up *testURLProvider) CanDeploy(envType string) bool { + return true +} From 9e62c5c0193fa6d5f6c6807fbdd43fca3370affc Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Fri, 27 Jul 2018 17:25:00 -0400 Subject: [PATCH 20/36] Implement authz check for DeleteDeployment --- kubernetes/deployments_access.go | 59 +++++++++++++++---- .../deployments_access_blackbox_test.go | 41 +++++++++++++ kubernetes/deployments_kubeclient.go | 20 +++---- .../deployments_kubeclient_blackbox_test.go | 1 + 4 files changed, 101 insertions(+), 20 deletions(-) diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go index 7d5c13a48c..7371f0dfa0 100644 --- a/kubernetes/deployments_access.go +++ b/kubernetes/deployments_access.go @@ -26,7 +26,7 @@ type KubeAccessControl interface { //CanScaleDeployment(envName string) (bool, error) FIXME How will this work? Need deployment name? //CanGetDeploymentStats(envName string) (bool, error) //CanGetDeploymentStatSeries(envName string) (bool, error) - //CanDeleteDeployment(envName string) (bool, error) + CanDeleteDeployment(envName string) (bool, error) CanGetEnvironments() (bool, error) CanGetEnvironment(envName string) (bool, error) } @@ -68,17 +68,57 @@ func (rulesMap accessRules) isAuthorized(reqs []*requestedAccess) bool { return true } +var deleteDeploymentRules = []*requestedAccess{ + {qualifiedResource{"", "services"}, []string{verbList, verbDelete}}, + {qualifiedResource{"", "routes"}, []string{verbList, verbDelete}}, + {qualifiedResource{"", "deploymentconfigs"}, []string{verbGet, verbDelete}}, +} + +func (kc *kubeClient) CanDeleteDeployment(envName string) (bool, error) { + // Also need access to builds in user namespace + ok, err := kc.canGetBuilds() + if err != nil { + return false, err + } else if !ok { + return false, nil + } + + rules, err := kc.getRulesForEnvironment(envName) + if err != nil { + return false, err + } + + return rules.isAuthorized(deleteDeploymentRules), nil +} + +const environmentTypeUser = "user" + +var getBuildsRules = []*requestedAccess{ + {qualifiedResource{"", "builds"}, []string{verbList}}, +} + +func (kc *kubeClient) canGetBuilds() (bool, error) { + rules, err := kc.getRulesForEnvironment(environmentTypeUser) + if err != nil { + return false, err + } + + return rules.isAuthorized(getBuildsRules), nil +} + var getEnvironmentRules = []*requestedAccess{ - {qualifiedResource{"", "resourcequotas"}, []string{verbList, verbGet}}, + {qualifiedResource{"", "resourcequotas"}, []string{verbList}}, } func (kc *kubeClient) CanGetEnvironments() (bool, error) { for envName := range kc.envMap { - ok, err := kc.CanGetEnvironment(envName) - if err != nil { - return false, err - } else if !ok { - return false, nil + if kc.CanDeploy(envName) { + ok, err := kc.CanGetEnvironment(envName) + if err != nil { + return false, err + } else if !ok { + return false, nil + } } } return true, nil @@ -90,8 +130,7 @@ func (kc *kubeClient) CanGetEnvironment(envName string) (bool, error) { return false, err } - ok := rules.isAuthorized(getEnvironmentRules) - return ok, nil + return rules.isAuthorized(getEnvironmentRules), nil } // Gets the authorization rules for the current user in a given environment @@ -103,7 +142,7 @@ func (kc *kubeClient) getRulesForEnvironment(envName string) (*accessRules, erro } // Lookup authorization rules for this environment - envNS, err := kc.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, true) if err != nil { return nil, err } diff --git a/kubernetes/deployments_access_blackbox_test.go b/kubernetes/deployments_access_blackbox_test.go index 356b9d907e..0f32367a21 100644 --- a/kubernetes/deployments_access_blackbox_test.go +++ b/kubernetes/deployments_access_blackbox_test.go @@ -7,6 +7,47 @@ import ( "github.com/stretchr/testify/require" ) +func TestCanDeleteDeployment(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + envName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + envName: "run", + cassetteName: "can-i", + expectedResult: 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} + func TestCanGetEnvironments(t *testing.T) { testCases := []struct { testName string diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go index 2e26f54034..9b0725acc2 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -199,7 +199,7 @@ func NewKubeClient(config *KubeClientConfig) (KubeClientInterface, error) { MetricsGetter: config.MetricsGetter, } - rules, err := kubeClient.lookupAllRules(config.UserNamespace) // XXX + /*rules, err := kubeClient.lookupAllRules(config.UserNamespace) // XXX if err != nil { return nil, err } @@ -208,7 +208,7 @@ func NewKubeClient(config *KubeClientConfig) (KubeClientInterface, error) { if err != nil { return nil, err } - fmt.Printf("CanGetEnvironment %v\n", canGetEnv) + fmt.Printf("CanGetEnvironment %v\n", canGetEnv)*/ return kubeClient, nil } @@ -352,7 +352,7 @@ func (kc *kubeClient) GetApplication(spaceName string, appName string) (*app.Sim // 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.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, false) if err != nil { return nil, err } @@ -436,7 +436,7 @@ func (kc *kubeClient) getApplicationURL(envNS string, deploy *deployment) (*stri // 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.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, false) if err != nil { return nil, err } @@ -508,7 +508,7 @@ func (kc *kubeClient) GetDeployment(spaceName string, appName string, envName st // 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.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, false) if err != nil { return nil, err } @@ -567,7 +567,7 @@ func (kc *kubeClient) GetDeploymentStats(spaceName string, appName string, envNa // 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.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, false) if err != nil { return nil, err } @@ -624,7 +624,7 @@ func (kc *kubeClient) GetDeploymentStatSeries(spaceName string, appName string, } func (kc *kubeClient) DeleteDeployment(spaceName string, appName string, envName string) error { - envNS, err := kc.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, false) if err != nil { return err } @@ -693,7 +693,7 @@ func (kc *kubeClient) GetEnvironments() ([]*app.SimpleEnvironment, error) { // GetEnvironment returns information on an environment with the provided name func (kc *kubeClient) GetEnvironment(envName string) (*app.SimpleEnvironment, error) { - envNS, err := kc.getEnvironmentNamespace(envName) + envNS, err := kc.getEnvironmentNamespace(envName, false) if err != nil { return nil, err } @@ -777,9 +777,9 @@ func (oc *openShiftAPIClient) GetBuildConfigs(namespace string, labelSelector st return oc.getResource(bcURL, false) } -func (kc *kubeClient) getEnvironmentNamespace(envName string) (string, error) { +func (kc *kubeClient) getEnvironmentNamespace(envName string, includeInternal bool) (string, error) { envNS, pres := kc.envMap[envName] - if !pres || !kc.CanDeploy(envName) { + if !pres || !kc.CanDeploy(envName) && !includeInternal { return "", errs.Errorf("unknown environment: %s", envName) } return envNS, nil diff --git a/kubernetes/deployments_kubeclient_blackbox_test.go b/kubernetes/deployments_kubeclient_blackbox_test.go index cbc6909f39..fc170687a2 100644 --- a/kubernetes/deployments_kubeclient_blackbox_test.go +++ b/kubernetes/deployments_kubeclient_blackbox_test.go @@ -1588,6 +1588,7 @@ func (up *testURLProvider) GetMetricsURL(envNS string) (*string, error) { func (up *testURLProvider) GetEnvironmentMapping() map[string]string { return map[string]string{ + "user": "myNamespace", "test": "myNamespace", "run": "my-run", "stage": "my-stage", From ec4bad9fb219410607687396098ec52e488144ff Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Tue, 31 Jul 2018 18:29:01 -0400 Subject: [PATCH 21/36] Implement remaining methods, add tests for access control failure on builds --- kubernetes/deployments_access.go | 128 +- .../deployments_access_blackbox_test.go | 282 + test/kubernetes/can-i-no-builds.yaml | 8478 +++++++++++++++++ 3 files changed, 8865 insertions(+), 23 deletions(-) create mode 100644 test/kubernetes/can-i-no-builds.yaml diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go index 7371f0dfa0..7a470cf010 100644 --- a/kubernetes/deployments_access.go +++ b/kubernetes/deployments_access.go @@ -19,13 +19,15 @@ const ( 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() (bool, error) - //CanScaleDeployment(envName string) (bool, error) FIXME How will this work? Need deployment name? - //CanGetDeploymentStats(envName string) (bool, error) - //CanGetDeploymentStatSeries(envName string) (bool, error) + 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) @@ -68,42 +70,127 @@ func (rulesMap accessRules) isAuthorized(reqs []*requestedAccess) bool { return true } +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 +} + +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}}, +} + +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}}, +} + +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}}, } +// TODO Do we want resource name-specific checks. Can delete DC named X? 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}}, +} + +func (kc *kubeClient) CanGetDeploymentStats(envName string) (bool, error) { + return kc.checkAuthorizedWithBuilds(envName, getDeploymentStatsRules) +} + +func (kc *kubeClient) CanGetDeploymentStatSeries(envName string) (bool, error) { + return kc.checkAuthorizedWithBuilds(envName, getDeploymentStatsRules) +} + +func (kc *kubeClient) checkAuthorizedWithBuilds(envName string, reqs []*requestedAccess) (bool, error) { // Also need access to builds in user namespace - ok, err := kc.canGetBuilds() + ok, err := kc.checkAuthorizedInEnv(getBuildsRules, environmentTypeUser) if err != nil { return false, err } else if !ok { return false, nil } - rules, err := kc.getRulesForEnvironment(envName) - if err != nil { - return false, err - } - - return rules.isAuthorized(deleteDeploymentRules), 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) canGetBuilds() (bool, error) { - rules, err := kc.getRulesForEnvironment(environmentTypeUser) +func (kc *kubeClient) checkAuthorizedInEnv(reqs []*requestedAccess, envName string) (bool, error) { + rules, err := kc.getRulesForEnvironment(envName) if err != nil { return false, err } - return rules.isAuthorized(getBuildsRules), nil + return rules.isAuthorized(reqs), nil } var getEnvironmentRules = []*requestedAccess{ @@ -125,12 +212,7 @@ func (kc *kubeClient) CanGetEnvironments() (bool, error) { } func (kc *kubeClient) CanGetEnvironment(envName string) (bool, error) { - rules, err := kc.getRulesForEnvironment(envName) - if err != nil { - return false, err - } - - return rules.isAuthorized(getEnvironmentRules), nil + return kc.checkAuthorizedInEnv(getEnvironmentRules, envName) } // Gets the authorization rules for the current user in a given environment @@ -238,7 +320,7 @@ func getStringSliceFromJSON(jsonObj map[string]interface{}, name string) []strin var items []string jsonArray, ok := jsonObj[name].([]interface{}) if ok { - items = make([]string, len(jsonArray)) + items = make([]string, 0, len(jsonArray)) for _, jsonItem := range jsonArray { item, ok := jsonItem.(string) if !ok { diff --git a/kubernetes/deployments_access_blackbox_test.go b/kubernetes/deployments_access_blackbox_test.go index 0f32367a21..91b52109c9 100644 --- a/kubernetes/deployments_access_blackbox_test.go +++ b/kubernetes/deployments_access_blackbox_test.go @@ -7,6 +7,188 @@ import ( "github.com/stretchr/testify/require" ) +func TestCanGetSpace(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + cassetteName: "can-i", + expectedResult: true, + }, + { + testName: "No Builds", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, + } + + 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} + +func TestCanGetApplication(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + cassetteName: "can-i", + expectedResult: true, + }, + { + testName: "No Builds", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, + } + + 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} + +func TestCanGetDeployment(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + envName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + envName: "run", + cassetteName: "can-i", + expectedResult: true, + }, + { + testName: "No Builds", + envName: "run", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, + } + + 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} + +func TestCanScaleDeployment(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + envName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + envName: "run", + cassetteName: "can-i", + expectedResult: true, + }, + { + testName: "No Builds", + envName: "run", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, + } + + 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} + func TestCanDeleteDeployment(t *testing.T) { testCases := []struct { testName string @@ -22,6 +204,12 @@ func TestCanDeleteDeployment(t *testing.T) { cassetteName: "can-i", expectedResult: true, }, + { + testName: "No Builds", + envName: "run", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, } for _, testCase := range testCases { @@ -86,3 +274,97 @@ func TestCanGetEnvironments(t *testing.T) { }) } } + +func TestCanGetDeploymentStats(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + envName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + envName: "run", + cassetteName: "can-i", + expectedResult: true, + }, + { + testName: "No Builds", + envName: "run", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, + } + + 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} + +func TestCanGetDeploymentStatSeries(t *testing.T) { + testCases := []struct { + testName string + cassetteName string + envName string + expectedResult bool + shouldFail bool + errorChecker func(error) (bool, error) + }{ + { + testName: "Basic", + envName: "run", + cassetteName: "can-i", + expectedResult: true, + }, + { + testName: "No Builds", + envName: "run", + cassetteName: "can-i-no-builds", + expectedResult: false, + }, + } + + 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") + 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, testCase.expectedResult, result, "Expected different authorization result") + } + }) + } +} diff --git a/test/kubernetes/can-i-no-builds.yaml b/test/kubernetes/can-i-no-builds.yaml new file mode 100644 index 0000000000..18067b78dc --- /dev/null +++ b/test/kubernetes/can-i-no-builds.yaml @@ -0,0 +1,8478 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + headers: + Content-Type: + - application/json;charset=UTF-8 + status: 200 OK + code: 200 From f28fce8921bf441529b76c400b207daecd7bb7d5 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Wed, 1 Aug 2018 15:39:08 -0400 Subject: [PATCH 22/36] Fix URLProvider changes, add tests for CanDeploy --- controller/deployments_urlprovider.go | 4 ++- controller/deployments_urlprovider_test.go | 40 +++++++++++++++++++--- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/controller/deployments_urlprovider.go b/controller/deployments_urlprovider.go index 42dab66c6d..cba02b6cf0 100644 --- a/controller/deployments_urlprovider.go +++ b/controller/deployments_urlprovider.go @@ -199,6 +199,8 @@ func (up *tenantURLProvider) GetEnvironmentMapping() map[string]string { log.Error(nil, map[string]interface{}{ "namespace": envNS, }, "namespace has no type") + } else { + result[*envName] = envNS } } return result @@ -208,7 +210,7 @@ func (up *tenantURLProvider) GetEnvironmentMapping() map[string]string { 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 CanDeploy(envType string) bool { +func (up *tenantURLProvider) CanDeploy(envType string) bool { _, pres := internalNamespaceTypes[envType] return !pres } diff --git a/controller/deployments_urlprovider_test.go b/controller/deployments_urlprovider_test.go index cd20045fa8..99cd0c11c2 100644 --- a/controller/deployments_urlprovider_test.go +++ b/controller/deployments_urlprovider_test.go @@ -225,22 +225,31 @@ func TestTenantGetEnvironmentMapping(t *testing.T) { testName: "Basic", inputFile: "user-services.json", expectedMap: map[string]string{ - "run": "theuser-run", - "stage": "theuser-stage", + "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{ - "run": "theuser-run", + "user": "theuser", + "run": "theuser-run", + "che": "theuser-che", + "jenkins": "theuser-jenkins", }, }, { testName: "Empty Type", inputFile: "user-services-empty-type.json", expectedMap: map[string]string{ - "run": "theuser-run", + "user": "theuser", + "run": "theuser-run", + "che": "theuser-che", + "jenkins": "theuser-jenkins", }, }, } @@ -259,6 +268,29 @@ func TestTenantGetEnvironmentMapping(t *testing.T) { } } +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 { From b814a8adab6fe81bc0b82ecb5cb1aa7860f4f765 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Wed, 1 Aug 2018 18:23:48 -0400 Subject: [PATCH 23/36] Better test error conditions --- kubernetes/deployments_access.go | 19 +- .../deployments_access_blackbox_test.go | 150 +- test/kubernetes/can-i-bad-resource.yaml | 8480 +++++++++++++++++ test/kubernetes/can-i-bad-rule.yaml | 8480 +++++++++++++++++ test/kubernetes/can-i-bad-verbs.yaml | 8480 +++++++++++++++++ test/kubernetes/can-i-empty-group.yaml | 8477 ++++++++++++++++ test/kubernetes/can-i-no-dc.yaml | 8478 ++++++++++++++++ test/kubernetes/can-i-no-quotas.yaml | 8478 ++++++++++++++++ test/kubernetes/can-i-no-rules.yaml | 85 + test/kubernetes/can-i-no-status.yaml | 82 + 10 files changed, 51161 insertions(+), 48 deletions(-) create mode 100644 test/kubernetes/can-i-bad-resource.yaml create mode 100644 test/kubernetes/can-i-bad-rule.yaml create mode 100644 test/kubernetes/can-i-bad-verbs.yaml create mode 100644 test/kubernetes/can-i-empty-group.yaml create mode 100644 test/kubernetes/can-i-no-dc.yaml create mode 100644 test/kubernetes/can-i-no-quotas.yaml create mode 100644 test/kubernetes/can-i-no-rules.yaml create mode 100644 test/kubernetes/can-i-no-status.yaml diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go index 7a470cf010..b26b091f21 100644 --- a/kubernetes/deployments_access.go +++ b/kubernetes/deployments_access.go @@ -249,11 +249,10 @@ func (kc *kubeClient) lookupAllRules(namespace string) (*accessRules, error) { return nil, err } - // TODO Parse using info from https://github.com/openshift/api/blob/master/authorization/v1/types.go + // Parse rules and store by resource type status, ok := reviewResult["status"].(map[string]interface{}) if !ok { log.Error(nil, map[string]interface{}{ - "err": err, "namespace": namespace, "response": reviewResult, }, "status missing from SelfSubjectRulesReview") @@ -262,9 +261,8 @@ func (kc *kubeClient) lookupAllRules(namespace string) (*accessRules, error) { rules, ok := status["rules"].([]interface{}) if !ok { log.Error(nil, map[string]interface{}{ - "err": err, "namespace": namespace, - "response": reviewResult, + "status": status, }, "rules missing from SelfSubjectRulesReview") return nil, errs.Errorf("rules missing from SelfSubjectRulesReview returned from %s", namespace) } @@ -274,10 +272,9 @@ func (kc *kubeClient) lookupAllRules(namespace string) (*accessRules, error) { rule, ok := rawRule.(map[string]interface{}) if !ok { log.Error(nil, map[string]interface{}{ - "err": err, "namespace": namespace, - "response": reviewResult, - }, "rules missing from SelfSubjectRulesReview") + "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) } @@ -303,7 +300,13 @@ func processRule(rules accessRules, rule map[string]interface{}) { // Add verbs for each group/resource in rule for _, resource := range resources { - // If no groups are specified, the rule is for the default k8s/OpenShift API group + /* + * 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 diff --git a/kubernetes/deployments_access_blackbox_test.go b/kubernetes/deployments_access_blackbox_test.go index 91b52109c9..36b9946180 100644 --- a/kubernetes/deployments_access_blackbox_test.go +++ b/kubernetes/deployments_access_blackbox_test.go @@ -13,7 +13,6 @@ func TestCanGetSpace(t *testing.T) { cassetteName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -25,6 +24,16 @@ func TestCanGetSpace(t *testing.T) { 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 { @@ -39,10 +48,6 @@ func TestCanGetSpace(t *testing.T) { result, err := kc.CanGetSpace() 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, testCase.expectedResult, result, "Expected different authorization result") @@ -57,7 +62,6 @@ func TestCanGetApplication(t *testing.T) { cassetteName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -69,6 +73,16 @@ func TestCanGetApplication(t *testing.T) { 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 { @@ -83,10 +97,6 @@ func TestCanGetApplication(t *testing.T) { result, err := kc.CanGetApplication() 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, testCase.expectedResult, result, "Expected different authorization result") @@ -102,7 +112,6 @@ func TestCanGetDeployment(t *testing.T) { envName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -116,6 +125,18 @@ func TestCanGetDeployment(t *testing.T) { 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 { @@ -130,10 +151,6 @@ func TestCanGetDeployment(t *testing.T) { result, err := kc.CanGetDeployment(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.Equal(t, testCase.expectedResult, result, "Expected different authorization result") @@ -149,7 +166,6 @@ func TestCanScaleDeployment(t *testing.T) { envName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -163,6 +179,18 @@ func TestCanScaleDeployment(t *testing.T) { 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 { @@ -177,10 +205,6 @@ func TestCanScaleDeployment(t *testing.T) { result, err := kc.CanScaleDeployment(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.Equal(t, testCase.expectedResult, result, "Expected different authorization result") @@ -196,7 +220,6 @@ func TestCanDeleteDeployment(t *testing.T) { envName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -210,6 +233,18 @@ func TestCanDeleteDeployment(t *testing.T) { 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 { @@ -224,10 +259,6 @@ func TestCanDeleteDeployment(t *testing.T) { result, err := kc.CanDeleteDeployment(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.Equal(t, testCase.expectedResult, result, "Expected different authorization result") @@ -242,13 +273,42 @@ func TestCanGetEnvironments(t *testing.T) { cassetteName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { 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 { @@ -263,10 +323,6 @@ func TestCanGetEnvironments(t *testing.T) { result, err := kc.CanGetEnvironments() 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, testCase.expectedResult, result, "Expected different authorization result") @@ -282,7 +338,6 @@ func TestCanGetDeploymentStats(t *testing.T) { envName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -296,6 +351,18 @@ func TestCanGetDeploymentStats(t *testing.T) { 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 { @@ -310,10 +377,6 @@ func TestCanGetDeploymentStats(t *testing.T) { result, err := kc.CanGetDeploymentStats(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.Equal(t, testCase.expectedResult, result, "Expected different authorization result") @@ -329,7 +392,6 @@ func TestCanGetDeploymentStatSeries(t *testing.T) { envName string expectedResult bool shouldFail bool - errorChecker func(error) (bool, error) }{ { testName: "Basic", @@ -343,6 +405,18 @@ func TestCanGetDeploymentStatSeries(t *testing.T) { 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 { @@ -357,10 +431,6 @@ func TestCanGetDeploymentStatSeries(t *testing.T) { result, err := kc.CanGetDeploymentStatSeries(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.Equal(t, testCase.expectedResult, result, "Expected different authorization result") diff --git a/test/kubernetes/can-i-bad-resource.yaml b/test/kubernetes/can-i-bad-resource.yaml new file mode 100644 index 0000000000..295c05748e --- /dev/null +++ b/test/kubernetes/can-i-bad-resource.yaml @@ -0,0 +1,8480 @@ +--- +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": [ + "appliedclusterresourcequotas", + ["bad", "resource"] + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..f6044d310f --- /dev/null +++ b/test/kubernetes/can-i-bad-rule.yaml @@ -0,0 +1,8480 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + [ "bad", "rule" ], + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..6e1251f91d --- /dev/null +++ b/test/kubernetes/can-i-bad-verbs.yaml @@ -0,0 +1,8480 @@ +--- +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", + ["bad", "verbs"], + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..a07b55fcde --- /dev/null +++ b/test/kubernetes/can-i-empty-group.yaml @@ -0,0 +1,8477 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..7d742e428a --- /dev/null +++ b/test/kubernetes/can-i-no-dc.yaml @@ -0,0 +1,8478 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..a9f5dca939 --- /dev/null +++ b/test/kubernetes/can-i-no-quotas.yaml @@ -0,0 +1,8478 @@ +--- +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": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..5cf9b496e5 --- /dev/null +++ b/test/kubernetes/can-i-no-rules.yaml @@ -0,0 +1,85 @@ +--- +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 new file mode 100644 index 0000000000..c7ad70714c --- /dev/null +++ b/test/kubernetes/can-i-no-status.yaml @@ -0,0 +1,82 @@ +--- +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 From adbb22cc4b6aaa570c25a0403d8035fcc854161e Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Thu, 2 Aug 2018 17:55:33 -0400 Subject: [PATCH 24/36] Clean up code --- kubernetes/deployments_access.go | 1 - kubernetes/deployments_kubeclient.go | 10 ---------- 2 files changed, 11 deletions(-) diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go index b26b091f21..ac5a3837db 100644 --- a/kubernetes/deployments_access.go +++ b/kubernetes/deployments_access.go @@ -142,7 +142,6 @@ var deleteDeploymentRules = []*requestedAccess{ {qualifiedResource{"", "deploymentconfigs"}, []string{verbGet, verbDelete}}, } -// TODO Do we want resource name-specific checks. Can delete DC named X? func (kc *kubeClient) CanDeleteDeployment(envName string) (bool, error) { return kc.checkAuthorizedWithBuilds(envName, deleteDeploymentRules) } diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go index 9b0725acc2..2c5b58f838 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -199,16 +199,6 @@ func NewKubeClient(config *KubeClientConfig) (KubeClientInterface, error) { MetricsGetter: config.MetricsGetter, } - /*rules, err := kubeClient.lookupAllRules(config.UserNamespace) // XXX - if err != nil { - return nil, err - } - fmt.Printf("%v\n", rules) // XXX - canGetEnv, err := kubeClient.CanGetEnvironment("run") - if err != nil { - return nil, err - } - fmt.Printf("CanGetEnvironment %v\n", canGetEnv)*/ return kubeClient, nil } From 8ea65cb1c7ac2eaccf49afe955beb292f8317437 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Thu, 2 Aug 2018 18:19:04 -0400 Subject: [PATCH 25/36] Add more internal environments to kubeclient tests --- kubernetes/deployments_kubeclient_blackbox_test.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/kubernetes/deployments_kubeclient_blackbox_test.go b/kubernetes/deployments_kubeclient_blackbox_test.go index fc170687a2..73dd42f144 100644 --- a/kubernetes/deployments_kubeclient_blackbox_test.go +++ b/kubernetes/deployments_kubeclient_blackbox_test.go @@ -1588,10 +1588,12 @@ func (up *testURLProvider) GetMetricsURL(envNS string) (*string, error) { func (up *testURLProvider) GetEnvironmentMapping() map[string]string { return map[string]string{ - "user": "myNamespace", - "test": "myNamespace", - "run": "my-run", - "stage": "my-stage", + "user": "myNamespace", + "test": "myNamespace", + "run": "my-run", + "stage": "my-stage", + "che": "my-che", + "jenkins": "my-jenkins", } } From 9d34f9fc49371639b34f7ab67704ef7de3396800 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Thu, 16 Aug 2018 17:19:20 -0400 Subject: [PATCH 26/36] Improve documentation, avoid boolean parameter for getting namespace --- kubernetes/deployments_access.go | 13 ++++++++++-- kubernetes/deployments_kubeclient.go | 30 ++++++++++++++++++++-------- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go index ac5a3837db..faab2bc384 100644 --- a/kubernetes/deployments_access.go +++ b/kubernetes/deployments_access.go @@ -70,6 +70,7 @@ func (rulesMap accessRules) isAuthorized(reqs []*requestedAccess) bool { return true } +// 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) @@ -92,6 +93,7 @@ func (kc *kubeClient) CanGetSpace() (bool, error) { 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) @@ -122,6 +124,7 @@ var getDeploymentRules = []*requestedAccess{ {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) } @@ -132,6 +135,7 @@ var scaleDeploymentRules = []*requestedAccess{ {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) } @@ -142,6 +146,7 @@ var deleteDeploymentRules = []*requestedAccess{ {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) } @@ -152,16 +157,18 @@ var getDeploymentStatsRules = []*requestedAccess{ {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) { - // Also need access to builds in user namespace + // Builds are located in user namespace ok, err := kc.checkAuthorizedInEnv(getBuildsRules, environmentTypeUser) if err != nil { return false, err @@ -196,6 +203,7 @@ 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) { @@ -210,6 +218,7 @@ func (kc *kubeClient) CanGetEnvironments() (bool, error) { 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) } @@ -223,7 +232,7 @@ func (kc *kubeClient) getRulesForEnvironment(envName string) (*accessRules, erro } // Lookup authorization rules for this environment - envNS, err := kc.getEnvironmentNamespace(envName, true) + envNS, err := kc.getEnvironmentNamespace(envName) if err != nil { return nil, err } diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go index 2c5b58f838..682b871fe9 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -318,6 +318,7 @@ func (kc *kubeClient) GetApplication(spaceName string, appName string) (*app.Sim // 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 { @@ -342,7 +343,7 @@ func (kc *kubeClient) GetApplication(spaceName string, appName string) (*app.Sim // 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.getEnvironmentNamespace(envName, false) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -426,7 +427,7 @@ func (kc *kubeClient) getApplicationURL(envNS string, deploy *deployment) (*stri // 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.getEnvironmentNamespace(envName, false) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -498,7 +499,7 @@ func (kc *kubeClient) GetDeployment(spaceName string, appName string, envName st // 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.getEnvironmentNamespace(envName, false) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -557,7 +558,7 @@ func (kc *kubeClient) GetDeploymentStats(spaceName string, appName string, envNa // 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.getEnvironmentNamespace(envName, false) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -614,7 +615,7 @@ func (kc *kubeClient) GetDeploymentStatSeries(spaceName string, appName string, } func (kc *kubeClient) DeleteDeployment(spaceName string, appName string, envName string) error { - envNS, err := kc.getEnvironmentNamespace(envName, false) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return err } @@ -670,6 +671,7 @@ func (kc *kubeClient) DeleteDeployment(spaceName string, appName string, envName 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 { @@ -683,7 +685,7 @@ func (kc *kubeClient) GetEnvironments() ([]*app.SimpleEnvironment, error) { // GetEnvironment returns information on an environment with the provided name func (kc *kubeClient) GetEnvironment(envName string) (*app.SimpleEnvironment, error) { - envNS, err := kc.getEnvironmentNamespace(envName, false) + envNS, err := kc.getDeployableEnvironmentNamespace(envName) if err != nil { return nil, err } @@ -767,9 +769,21 @@ func (oc *openShiftAPIClient) GetBuildConfigs(namespace string, labelSelector st return oc.getResource(bcURL, false) } -func (kc *kubeClient) getEnvironmentNamespace(envName string, includeInternal bool) (string, error) { +// 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) && !includeInternal { + 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 From 9b5b770a7ae17a0957305412467ba063f5cacd88 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Mon, 20 Aug 2018 18:07:18 -0400 Subject: [PATCH 27/36] Also check for wildcard rules --- kubernetes/deployments_access.go | 68 +- .../deployments_access_blackbox_test.go | 18 + .../kubernetes/can-i-all-groups-resource.yaml | 8491 +++++++++++++++++ test/kubernetes/can-i-all-groups.yaml | 8491 +++++++++++++++++ test/kubernetes/can-i-all-resource.yaml | 8491 +++++++++++++++++ 5 files changed, 25533 insertions(+), 26 deletions(-) create mode 100644 test/kubernetes/can-i-all-groups-resource.yaml create mode 100644 test/kubernetes/can-i-all-groups.yaml create mode 100644 test/kubernetes/can-i-all-resource.yaml diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go index faab2bc384..96f695e473 100644 --- a/kubernetes/deployments_access.go +++ b/kubernetes/deployments_access.go @@ -35,7 +35,7 @@ type KubeAccessControl interface { // Actions on a resource type that are required by one of our API methods type requestedAccess struct { - resource qualifiedResource + resource *qualifiedResource verbs []string } @@ -51,18 +51,27 @@ type qualifiedResource struct { // 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 { - // Look up rules for resource type - rules, pres := rulesMap[req.resource] - if !pres { - return false - } + // 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 { - _, pres := rules[verb] - if !pres { + if !containsVerb(rulesMap, res, verb) && + !containsVerb(rulesMap, allResAllGroup, verb) && + !containsVerb(rulesMap, allRes, verb) && + !containsVerb(rulesMap, allGroup, verb) { return false } } @@ -70,6 +79,13 @@ func (rulesMap accessRules) isAuthorized(reqs []*requestedAccess) bool { 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 @@ -117,11 +133,11 @@ func (kc *kubeClient) CanGetApplication() (bool, error) { } var getDeploymentRules = []*requestedAccess{ - {qualifiedResource{"", "deploymentconfigs"}, []string{verbGet}}, - {qualifiedResource{"", "replicationcontrollers"}, []string{verbList}}, - {qualifiedResource{"", "pods"}, []string{verbList}}, - {qualifiedResource{"", "services"}, []string{verbList}}, - {qualifiedResource{"", "routes"}, []string{verbList}}, + {&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 @@ -130,9 +146,9 @@ func (kc *kubeClient) CanGetDeployment(envName string) (bool, error) { } var scaleDeploymentRules = []*requestedAccess{ - {qualifiedResource{"", "deploymentconfigs"}, []string{verbGet}}, - {qualifiedResource{"", "deploymentconfigs/scale"}, []string{verbGet}}, - {qualifiedResource{"", "deploymentconfigs/scale"}, []string{verbUpdate}}, + {&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 @@ -141,9 +157,9 @@ func (kc *kubeClient) CanScaleDeployment(envName string) (bool, error) { } var deleteDeploymentRules = []*requestedAccess{ - {qualifiedResource{"", "services"}, []string{verbList, verbDelete}}, - {qualifiedResource{"", "routes"}, []string{verbList, verbDelete}}, - {qualifiedResource{"", "deploymentconfigs"}, []string{verbGet, verbDelete}}, + {&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 @@ -152,9 +168,9 @@ func (kc *kubeClient) CanDeleteDeployment(envName string) (bool, error) { } var getDeploymentStatsRules = []*requestedAccess{ - {qualifiedResource{"", "deploymentconfigs"}, []string{verbGet}}, - {qualifiedResource{"", "replicationcontrollers"}, []string{verbList}}, - {qualifiedResource{"", "pods"}, []string{verbList}}, + {&qualifiedResource{"", "deploymentconfigs"}, []string{verbGet}}, + {&qualifiedResource{"", "replicationcontrollers"}, []string{verbList}}, + {&qualifiedResource{"", "pods"}, []string{verbList}}, } // CanGetDeploymentStats returns whether the user is authorized to call KubeClientInterface.GetDeploymentStats @@ -182,12 +198,12 @@ func (kc *kubeClient) checkAuthorizedWithBuilds(envName string, reqs []*requeste const environmentTypeUser = "user" var getBuildConfigsAndBuildsRules = []*requestedAccess{ - {qualifiedResource{"", "buildconfigs"}, []string{verbList}}, - {qualifiedResource{"", "builds"}, []string{verbList}}, + {&qualifiedResource{"", "buildconfigs"}, []string{verbList}}, + {&qualifiedResource{"", "builds"}, []string{verbList}}, } var getBuildsRules = []*requestedAccess{ - {qualifiedResource{"", "builds"}, []string{verbList}}, + {&qualifiedResource{"", "builds"}, []string{verbList}}, } func (kc *kubeClient) checkAuthorizedInEnv(reqs []*requestedAccess, envName string) (bool, error) { @@ -200,7 +216,7 @@ func (kc *kubeClient) checkAuthorizedInEnv(reqs []*requestedAccess, envName stri } var getEnvironmentRules = []*requestedAccess{ - {qualifiedResource{"", "resourcequotas"}, []string{verbList}}, + {&qualifiedResource{"", "resourcequotas"}, []string{verbList}}, } // CanGetEnvironments returns whether the user is authorized to call KubeClientInterface.GetEnvironments diff --git a/kubernetes/deployments_access_blackbox_test.go b/kubernetes/deployments_access_blackbox_test.go index 36b9946180..46b6b720b8 100644 --- a/kubernetes/deployments_access_blackbox_test.go +++ b/kubernetes/deployments_access_blackbox_test.go @@ -119,6 +119,24 @@ func TestCanGetDeployment(t *testing.T) { 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", diff --git a/test/kubernetes/can-i-all-groups-resource.yaml b/test/kubernetes/can-i-all-groups-resource.yaml new file mode 100644 index 0000000000..5bd6fee1e2 --- /dev/null +++ b/test/kubernetes/can-i-all-groups-resource.yaml @@ -0,0 +1,8491 @@ +--- +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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..5d245f92d6 --- /dev/null +++ b/test/kubernetes/can-i-all-groups.yaml @@ -0,0 +1,8491 @@ +--- +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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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 new file mode 100644 index 0000000000..48b0d2c6ce --- /dev/null +++ b/test/kubernetes/can-i-all-resource.yaml @@ -0,0 +1,8491 @@ +--- +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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + 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": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "bindings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "events" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "limitranges" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/status" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ] + }, + { + "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": [ + "pods/attach" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/exec" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/log" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/portforward" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/proxy" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotausages" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "impersonate", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "services/proxy" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/scale" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigrollbacks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/instantiate" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/scale" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "apps.openshift.io" + ], + "resources": [ + "deploymentconfigs/status" + ] + }, + { + "verbs": [ + "impersonate" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "userextras/scopes.authorization.openshift.io" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "authorization.openshift.io" + ], + "resources": [ + "selfsubjectrulesreviews" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cicd-is-disabling-cronjobs" + ] + }, + { + "verbs": [ + "delete", + "deletecollection", + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiate" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/instantiatebinary" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildconfigs/webhooks" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "buildlogs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/clone" + ] + }, + { + "verbs": [ + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/details" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/jenkinspipeline" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/log" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "builds/source" + ] + }, + { + "verbs": [ + "edit", + "view" + ], + "attributeRestrictions": null, + "apiGroups": [ + "build.openshift.io" + ], + "resources": [ + "jenkins" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/rollback" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "ingresses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicasets/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "extensions" + ], + "resources": [ + "replicationcontrollers/scale" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimages" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamimports" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreammappings" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams" + ] + }, + { + "verbs": [ + "get", + "update" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/layers" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/secrets" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreams/status" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "image.openshift.io" + ], + "resources": [ + "imagestreamtags" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthaccesstokens" + ] + }, + { + "verbs": [ + "delete" + ], + "attributeRestrictions": null, + "apiGroups": [ + "oauth.openshift.io" + ], + "resources": [ + "oauthauthorizetokens" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ] + }, + { + "verbs": [ + "create", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projectrequests" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "project.openshift.io" + ], + "resources": [ + "projects" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "quota.openshift.io" + ], + "resources": [ + "appliedclusterresourcequotas" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ] + }, + { + "verbs": [ + "create" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "cicd-is-disabling-routes/custom-host" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes" + ] + }, + { + "verbs": [ + "get", + "list", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/status" + ] + }, + { + "verbs": [ + "get", + "list" + ], + "attributeRestrictions": null, + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "processedtemplates" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateconfigs" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templateinstances" + ] + }, + { + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ], + "attributeRestrictions": null, + "apiGroups": [ + "template.openshift.io" + ], + "resources": [ + "templates" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": [ + "user.openshift.io" + ], + "resources": [ + "users" + ], + "resourceNames": [ + "~" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/.well-known/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/api/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/apis/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/healthz/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/oapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/openapi/v2" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/osapi/" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger-2.0.0.pb-v1" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swagger.json" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/swaggerapi/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + }, + { + "verbs": [ + "get" + ], + "attributeRestrictions": null, + "apiGroups": null, + "resources": [], + "nonResourceURLs": [ + "/version/*" + ] + } + ] + } + } + headers: + Content-Type: + - application/json;charset=UTF-8 + status: 200 OK + code: 200 From ad29c0466def43aa8e71207423b5dca8b2f75832 Mon Sep 17 00:00:00 2001 From: Elliott Baron Date: Fri, 7 Sep 2018 17:12:58 -0400 Subject: [PATCH 28/36] Reduce size of go-vcr cassettes --- .../kubernetes/can-i-all-groups-resource.yaml | 8180 +---------------- test/kubernetes/can-i-all-groups.yaml | 8180 +---------------- test/kubernetes/can-i-all-resource.yaml | 8180 +---------------- test/kubernetes/can-i-bad-resource.yaml | 8162 +--------------- test/kubernetes/can-i-bad-rule.yaml | 8162 +--------------- test/kubernetes/can-i-bad-verbs.yaml | 8162 +--------------- test/kubernetes/can-i-empty-group.yaml | 8180 +---------------- test/kubernetes/can-i-no-builds.yaml | 8178 +--------------- test/kubernetes/can-i-no-dc.yaml | 8180 +---------------- test/kubernetes/can-i-no-quotas.yaml | 8178 +--------------- test/kubernetes/can-i.yaml | 8162 +--------------- 11 files changed, 2118 insertions(+), 87786 deletions(-) diff --git a/test/kubernetes/can-i-all-groups-resource.yaml b/test/kubernetes/can-i-all-groups-resource.yaml index 5bd6fee1e2..8b11c30e0a 100644 --- a/test/kubernetes/can-i-all-groups-resource.yaml +++ b/test/kubernetes/can-i-all-groups-resource.yaml @@ -40,8 +40,13 @@ interactions: }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -49,13 +54,18 @@ interactions: "" ], "resources": [ - "appliedclusterresourcequotas" + "buildconfigs" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -63,7 +73,7 @@ interactions: "" ], "resources": [ - "bindings" + "builds" ] }, { @@ -82,31 +92,24 @@ interactions: "" ], "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" + "configmaps" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "buildconfigs/instantiatebinary" + "deploymentconfigs" ] }, { @@ -125,18 +128,13 @@ interactions: "" ], "resources": [ - "buildconfigs/webhooks" + "deploymentconfigs/scale" ] }, { "verbs": [ - "create", - "delete", - "deletecollection", "get", "list", - "patch", - "update", "watch" ], "attributeRestrictions": null, @@ -144,7 +142,7 @@ interactions: "" ], "resources": [ - "buildlogs" + "events" ] }, { @@ -163,49 +161,51 @@ interactions: "" ], "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" + "pods" ] }, { "verbs": [ - "update" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/details" + "replicationcontrollers" ] }, { "verbs": [ - "create" + "get", + "list", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/jenkinspipeline" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -213,44 +213,94 @@ interactions: "" ], "resources": [ - "builds/log" + "routes" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/source" + "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" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "cicd-is-disabling-routes/custom-host" + "buildconfigs" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "list" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "clusterroles" + "builds" ] }, { @@ -272,23 +322,13 @@ interactions: "configmaps" ] }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, { "verbs": [ "create", "delete", "deletecollection", + "get", + "list", "patch", "update", "watch" @@ -303,14 +343,21 @@ interactions: }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/instantiate" + "deploymentconfigs/scale" ] }, { @@ -324,19 +371,26 @@ interactions: "" ], "resources": [ - "deploymentconfigs/log" + "events" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/rollback" + "pods" ] }, { @@ -355,7 +409,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/scale" + "replicationcontrollers" ] }, { @@ -369,7 +423,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/status" + "resourcequotas" ] }, { @@ -388,13 +442,18 @@ interactions: "" ], "resources": [ - "endpoints" + "routes" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -402,9 +461,39 @@ interactions: "" ], "resources": [ - "events" + "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", @@ -421,19 +510,7 @@ interactions: "" ], "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" + "buildconfigs" ] }, { @@ -452,7 +529,7 @@ interactions: "" ], "resources": [ - "imagestreammappings" + "builds" ] }, { @@ -471,20 +548,26 @@ interactions: "" ], "resources": [ - "imagestreams" + "configmaps" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "update" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "imagestreams/layers" + "deploymentconfigs" ] }, { @@ -503,7 +586,7 @@ interactions: "" ], "resources": [ - "imagestreams/secrets" + "deploymentconfigs/scale" ] }, { @@ -517,7 +600,7 @@ interactions: "" ], "resources": [ - "imagestreams/status" + "events" ] }, { @@ -536,13 +619,18 @@ interactions: "" ], "resources": [ - "imagestreamtags" + "pods" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -550,7 +638,7 @@ interactions: "" ], "resources": [ - "limitranges" + "replicationcontrollers" ] }, { @@ -564,13 +652,18 @@ interactions: "" ], "resources": [ - "namespaces" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -578,7907 +671,26 @@ interactions: "" ], "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" + "routes" ] }, { "verbs": [ - "delete" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" + "services" ] } ] diff --git a/test/kubernetes/can-i-all-groups.yaml b/test/kubernetes/can-i-all-groups.yaml index 5d245f92d6..020d0d730b 100644 --- a/test/kubernetes/can-i-all-groups.yaml +++ b/test/kubernetes/can-i-all-groups.yaml @@ -40,8 +40,13 @@ interactions: }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -49,13 +54,18 @@ interactions: "" ], "resources": [ - "appliedclusterresourcequotas" + "buildconfigs" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -63,7 +73,7 @@ interactions: "" ], "resources": [ - "bindings" + "builds" ] }, { @@ -82,31 +92,24 @@ interactions: "" ], "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" + "configmaps" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "buildconfigs/instantiatebinary" + "deploymentconfigs" ] }, { @@ -125,18 +128,13 @@ interactions: "" ], "resources": [ - "buildconfigs/webhooks" + "deploymentconfigs/scale" ] }, { "verbs": [ - "create", - "delete", - "deletecollection", "get", "list", - "patch", - "update", "watch" ], "attributeRestrictions": null, @@ -144,7 +142,7 @@ interactions: "" ], "resources": [ - "buildlogs" + "events" ] }, { @@ -163,49 +161,51 @@ interactions: "" ], "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" + "pods" ] }, { "verbs": [ - "update" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/details" + "replicationcontrollers" ] }, { "verbs": [ - "create" + "get", + "list", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/jenkinspipeline" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -213,44 +213,94 @@ interactions: "" ], "resources": [ - "builds/log" + "routes" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/source" + "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" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "cicd-is-disabling-routes/custom-host" + "buildconfigs" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "list" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "clusterroles" + "builds" ] }, { @@ -272,23 +322,13 @@ interactions: "configmaps" ] }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, { "verbs": [ "create", "delete", "deletecollection", + "get", + "list", "patch", "update", "watch" @@ -303,14 +343,21 @@ interactions: }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/instantiate" + "deploymentconfigs/scale" ] }, { @@ -324,19 +371,26 @@ interactions: "" ], "resources": [ - "deploymentconfigs/log" + "events" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/rollback" + "pods" ] }, { @@ -355,7 +409,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/scale" + "replicationcontrollers" ] }, { @@ -369,7 +423,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/status" + "resourcequotas" ] }, { @@ -388,13 +442,18 @@ interactions: "" ], "resources": [ - "endpoints" + "routes" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -402,9 +461,39 @@ interactions: "" ], "resources": [ - "events" + "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", @@ -421,19 +510,7 @@ interactions: "" ], "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" + "buildconfigs" ] }, { @@ -452,7 +529,7 @@ interactions: "" ], "resources": [ - "imagestreammappings" + "builds" ] }, { @@ -471,20 +548,26 @@ interactions: "" ], "resources": [ - "imagestreams" + "configmaps" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "update" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "imagestreams/layers" + "deploymentconfigs" ] }, { @@ -503,7 +586,7 @@ interactions: "" ], "resources": [ - "imagestreams/secrets" + "deploymentconfigs/scale" ] }, { @@ -517,7 +600,7 @@ interactions: "" ], "resources": [ - "imagestreams/status" + "events" ] }, { @@ -536,13 +619,18 @@ interactions: "" ], "resources": [ - "imagestreamtags" + "pods" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -550,7 +638,7 @@ interactions: "" ], "resources": [ - "limitranges" + "replicationcontrollers" ] }, { @@ -564,13 +652,18 @@ interactions: "" ], "resources": [ - "namespaces" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -578,7907 +671,26 @@ interactions: "" ], "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" + "routes" ] }, { "verbs": [ - "delete" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" + "services" ] } ] diff --git a/test/kubernetes/can-i-all-resource.yaml b/test/kubernetes/can-i-all-resource.yaml index 48b0d2c6ce..872cd2f95a 100644 --- a/test/kubernetes/can-i-all-resource.yaml +++ b/test/kubernetes/can-i-all-resource.yaml @@ -40,8 +40,13 @@ interactions: }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -49,13 +54,18 @@ interactions: "" ], "resources": [ - "appliedclusterresourcequotas" + "buildconfigs" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -63,7 +73,7 @@ interactions: "" ], "resources": [ - "bindings" + "builds" ] }, { @@ -82,31 +92,24 @@ interactions: "" ], "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" + "configmaps" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "buildconfigs/instantiatebinary" + "deploymentconfigs" ] }, { @@ -125,18 +128,13 @@ interactions: "" ], "resources": [ - "buildconfigs/webhooks" + "deploymentconfigs/scale" ] }, { "verbs": [ - "create", - "delete", - "deletecollection", "get", "list", - "patch", - "update", "watch" ], "attributeRestrictions": null, @@ -144,7 +142,7 @@ interactions: "" ], "resources": [ - "buildlogs" + "events" ] }, { @@ -163,49 +161,51 @@ interactions: "" ], "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" + "pods" ] }, { "verbs": [ - "update" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/details" + "replicationcontrollers" ] }, { "verbs": [ - "create" + "get", + "list", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/jenkinspipeline" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -213,44 +213,94 @@ interactions: "" ], "resources": [ - "builds/log" + "routes" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/source" + "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" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "cicd-is-disabling-routes/custom-host" + "buildconfigs" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "list" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "clusterroles" + "builds" ] }, { @@ -272,23 +322,13 @@ interactions: "configmaps" ] }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, { "verbs": [ "create", "delete", "deletecollection", + "get", + "list", "patch", "update", "watch" @@ -303,14 +343,21 @@ interactions: }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/instantiate" + "deploymentconfigs/scale" ] }, { @@ -324,19 +371,26 @@ interactions: "" ], "resources": [ - "deploymentconfigs/log" + "events" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/rollback" + "pods" ] }, { @@ -355,7 +409,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/scale" + "replicationcontrollers" ] }, { @@ -369,7 +423,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/status" + "resourcequotas" ] }, { @@ -388,13 +442,18 @@ interactions: "" ], "resources": [ - "endpoints" + "routes" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -402,9 +461,39 @@ interactions: "" ], "resources": [ - "events" + "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", @@ -421,19 +510,7 @@ interactions: "" ], "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" + "buildconfigs" ] }, { @@ -452,7 +529,7 @@ interactions: "" ], "resources": [ - "imagestreammappings" + "builds" ] }, { @@ -471,20 +548,26 @@ interactions: "" ], "resources": [ - "imagestreams" + "configmaps" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "update" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "imagestreams/layers" + "deploymentconfigs" ] }, { @@ -503,7 +586,7 @@ interactions: "" ], "resources": [ - "imagestreams/secrets" + "deploymentconfigs/scale" ] }, { @@ -517,7 +600,7 @@ interactions: "" ], "resources": [ - "imagestreams/status" + "events" ] }, { @@ -536,13 +619,18 @@ interactions: "" ], "resources": [ - "imagestreamtags" + "pods" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -550,7 +638,7 @@ interactions: "" ], "resources": [ - "limitranges" + "replicationcontrollers" ] }, { @@ -564,13 +652,18 @@ interactions: "" ], "resources": [ - "namespaces" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -578,7907 +671,26 @@ interactions: "" ], "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" + "routes" ] }, { "verbs": [ - "delete" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" + "services" ] } ] diff --git a/test/kubernetes/can-i-bad-resource.yaml b/test/kubernetes/can-i-bad-resource.yaml index 295c05748e..fa6420a1b6 100644 --- a/test/kubernetes/can-i-bad-resource.yaml +++ b/test/kubernetes/can-i-bad-resource.yaml @@ -26,8 +26,13 @@ interactions: "rules": [ { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -35,24 +40,10 @@ interactions: "" ], "resources": [ - "appliedclusterresourcequotas", + "buildconfigs", ["bad", "resource"] ] }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, { "verbs": [ "create", @@ -69,31 +60,7 @@ interactions: "" ], "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" + "builds" ] }, { @@ -112,7 +79,7 @@ interactions: "" ], "resources": [ - "buildconfigs/webhooks" + "configmaps" ] }, { @@ -131,7 +98,7 @@ interactions: "" ], "resources": [ - "buildlogs" + "deploymentconfigs" ] }, { @@ -150,43 +117,59 @@ interactions: "" ], "resources": [ - "builds" + "deploymentconfigs/scale" ] }, { "verbs": [ - "create" + "get", + "list", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/clone" + "events" ] }, { "verbs": [ - "update" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/details" + "pods" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/jenkinspipeline" + "replicationcontrollers" ] }, { @@ -200,44 +183,94 @@ interactions: "" ], "resources": [ - "builds/log" + "resourcequotas" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/source" + "routes" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "cicd-is-disabling-routes/custom-host" + "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" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "clusterroles" + "buildconfigs" ] }, { @@ -256,19 +289,26 @@ interactions: "" ], "resources": [ - "configmaps" + "builds" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigrollbacks" + "configmaps" ] }, { @@ -292,14 +332,21 @@ interactions: }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/instantiate" + "deploymentconfigs/scale" ] }, { @@ -313,19 +360,26 @@ interactions: "" ], "resources": [ - "deploymentconfigs/log" + "events" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/rollback" + "pods" ] }, { @@ -344,7 +398,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/scale" + "replicationcontrollers" ] }, { @@ -358,7 +412,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/status" + "resourcequotas" ] }, { @@ -377,13 +431,18 @@ interactions: "" ], "resources": [ - "endpoints" + "routes" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -391,9 +450,39 @@ interactions: "" ], "resources": [ - "events" + "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", @@ -410,19 +499,7 @@ interactions: "" ], "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" + "buildconfigs" ] }, { @@ -441,7 +518,7 @@ interactions: "" ], "resources": [ - "imagestreammappings" + "builds" ] }, { @@ -460,20 +537,26 @@ interactions: "" ], "resources": [ - "imagestreams" + "configmaps" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "update" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "imagestreams/layers" + "deploymentconfigs" ] }, { @@ -492,7 +575,7 @@ interactions: "" ], "resources": [ - "imagestreams/secrets" + "deploymentconfigs/scale" ] }, { @@ -506,7 +589,7 @@ interactions: "" ], "resources": [ - "imagestreams/status" + "events" ] }, { @@ -525,13 +608,18 @@ interactions: "" ], "resources": [ - "imagestreamtags" + "pods" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -539,7 +627,7 @@ interactions: "" ], "resources": [ - "limitranges" + "replicationcontrollers" ] }, { @@ -553,13 +641,18 @@ interactions: "" ], "resources": [ - "namespaces" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -567,31 +660,7 @@ interactions: "" ], "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" + "routes" ] }, { @@ -610,7864 +679,7 @@ interactions: "" ], "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" + "services" ] } ] diff --git a/test/kubernetes/can-i-bad-rule.yaml b/test/kubernetes/can-i-bad-rule.yaml index f6044d310f..809fed8a54 100644 --- a/test/kubernetes/can-i-bad-rule.yaml +++ b/test/kubernetes/can-i-bad-rule.yaml @@ -26,8 +26,13 @@ interactions: "rules": [ { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -35,21 +40,7 @@ interactions: "" ], "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" + "buildconfigs" ] }, [ "bad", "rule" ], @@ -69,31 +60,7 @@ interactions: "" ], "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" + "builds" ] }, { @@ -112,7 +79,7 @@ interactions: "" ], "resources": [ - "buildconfigs/webhooks" + "configmaps" ] }, { @@ -131,7 +98,7 @@ interactions: "" ], "resources": [ - "buildlogs" + "deploymentconfigs" ] }, { @@ -150,43 +117,59 @@ interactions: "" ], "resources": [ - "builds" + "deploymentconfigs/scale" ] }, { "verbs": [ - "create" + "get", + "list", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/clone" + "events" ] }, { "verbs": [ - "update" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/details" + "pods" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/jenkinspipeline" + "replicationcontrollers" ] }, { @@ -200,44 +183,94 @@ interactions: "" ], "resources": [ - "builds/log" + "resourcequotas" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/source" + "routes" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "cicd-is-disabling-routes/custom-host" + "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" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "clusterroles" + "buildconfigs" ] }, { @@ -256,19 +289,26 @@ interactions: "" ], "resources": [ - "configmaps" + "builds" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigrollbacks" + "configmaps" ] }, { @@ -292,14 +332,21 @@ interactions: }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/instantiate" + "deploymentconfigs/scale" ] }, { @@ -313,19 +360,26 @@ interactions: "" ], "resources": [ - "deploymentconfigs/log" + "events" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/rollback" + "pods" ] }, { @@ -344,7 +398,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/scale" + "replicationcontrollers" ] }, { @@ -358,7 +412,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/status" + "resourcequotas" ] }, { @@ -377,13 +431,18 @@ interactions: "" ], "resources": [ - "endpoints" + "routes" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -391,9 +450,39 @@ interactions: "" ], "resources": [ - "events" + "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", @@ -410,19 +499,7 @@ interactions: "" ], "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" + "buildconfigs" ] }, { @@ -441,7 +518,7 @@ interactions: "" ], "resources": [ - "imagestreammappings" + "builds" ] }, { @@ -460,20 +537,26 @@ interactions: "" ], "resources": [ - "imagestreams" + "configmaps" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "update" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "imagestreams/layers" + "deploymentconfigs" ] }, { @@ -492,7 +575,7 @@ interactions: "" ], "resources": [ - "imagestreams/secrets" + "deploymentconfigs/scale" ] }, { @@ -506,7 +589,7 @@ interactions: "" ], "resources": [ - "imagestreams/status" + "events" ] }, { @@ -525,13 +608,18 @@ interactions: "" ], "resources": [ - "imagestreamtags" + "pods" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -539,7 +627,7 @@ interactions: "" ], "resources": [ - "limitranges" + "replicationcontrollers" ] }, { @@ -553,13 +641,18 @@ interactions: "" ], "resources": [ - "namespaces" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -567,31 +660,7 @@ interactions: "" ], "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" + "routes" ] }, { @@ -610,7864 +679,7 @@ interactions: "" ], "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" + "services" ] } ] diff --git a/test/kubernetes/can-i-bad-verbs.yaml b/test/kubernetes/can-i-bad-verbs.yaml index 6e1251f91d..dde544d526 100644 --- a/test/kubernetes/can-i-bad-verbs.yaml +++ b/test/kubernetes/can-i-bad-verbs.yaml @@ -26,23 +26,14 @@ interactions: "rules": [ { "verbs": [ - "get", - "list", + "create", ["bad", "verbs"], - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -50,7 +41,7 @@ interactions: "" ], "resources": [ - "bindings" + "buildconfigs" ] }, { @@ -69,31 +60,7 @@ interactions: "" ], "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" + "builds" ] }, { @@ -112,7 +79,7 @@ interactions: "" ], "resources": [ - "buildconfigs/webhooks" + "configmaps" ] }, { @@ -131,7 +98,7 @@ interactions: "" ], "resources": [ - "buildlogs" + "deploymentconfigs" ] }, { @@ -150,43 +117,59 @@ interactions: "" ], "resources": [ - "builds" + "deploymentconfigs/scale" ] }, { "verbs": [ - "create" + "get", + "list", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/clone" + "events" ] }, { "verbs": [ - "update" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/details" + "pods" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/jenkinspipeline" + "replicationcontrollers" ] }, { @@ -200,44 +183,94 @@ interactions: "" ], "resources": [ - "builds/log" + "resourcequotas" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/source" + "routes" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "cicd-is-disabling-routes/custom-host" + "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" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "clusterroles" + "buildconfigs" ] }, { @@ -256,19 +289,26 @@ interactions: "" ], "resources": [ - "configmaps" + "builds" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigrollbacks" + "configmaps" ] }, { @@ -292,14 +332,21 @@ interactions: }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/instantiate" + "deploymentconfigs/scale" ] }, { @@ -313,19 +360,26 @@ interactions: "" ], "resources": [ - "deploymentconfigs/log" + "events" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/rollback" + "pods" ] }, { @@ -344,7 +398,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/scale" + "replicationcontrollers" ] }, { @@ -358,7 +412,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/status" + "resourcequotas" ] }, { @@ -377,13 +431,18 @@ interactions: "" ], "resources": [ - "endpoints" + "routes" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -391,9 +450,39 @@ interactions: "" ], "resources": [ - "events" + "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", @@ -410,19 +499,7 @@ interactions: "" ], "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" + "buildconfigs" ] }, { @@ -441,7 +518,7 @@ interactions: "" ], "resources": [ - "imagestreammappings" + "builds" ] }, { @@ -460,20 +537,26 @@ interactions: "" ], "resources": [ - "imagestreams" + "configmaps" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "update" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "imagestreams/layers" + "deploymentconfigs" ] }, { @@ -492,7 +575,7 @@ interactions: "" ], "resources": [ - "imagestreams/secrets" + "deploymentconfigs/scale" ] }, { @@ -506,7 +589,7 @@ interactions: "" ], "resources": [ - "imagestreams/status" + "events" ] }, { @@ -525,13 +608,18 @@ interactions: "" ], "resources": [ - "imagestreamtags" + "pods" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -539,7 +627,7 @@ interactions: "" ], "resources": [ - "limitranges" + "replicationcontrollers" ] }, { @@ -553,13 +641,18 @@ interactions: "" ], "resources": [ - "namespaces" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -567,31 +660,7 @@ interactions: "" ], "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" + "routes" ] }, { @@ -610,7864 +679,7 @@ interactions: "" ], "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" + "services" ] } ] diff --git a/test/kubernetes/can-i-empty-group.yaml b/test/kubernetes/can-i-empty-group.yaml index a07b55fcde..4073c40393 100644 --- a/test/kubernetes/can-i-empty-group.yaml +++ b/test/kubernetes/can-i-empty-group.yaml @@ -26,8 +26,13 @@ interactions: "rules": [ { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -35,21 +40,7 @@ interactions: "" ], "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" + "buildconfigs" ] }, { @@ -68,31 +59,7 @@ interactions: "" ], "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" + "builds" ] }, { @@ -111,7 +78,7 @@ interactions: "" ], "resources": [ - "buildconfigs/webhooks" + "configmaps" ] }, { @@ -130,7 +97,7 @@ interactions: "" ], "resources": [ - "buildlogs" + "deploymentconfigs" ] }, { @@ -149,43 +116,59 @@ interactions: "" ], "resources": [ - "builds" + "deploymentconfigs/scale" ] }, { "verbs": [ - "create" + "get", + "list", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/clone" + "events" ] }, { "verbs": [ - "update" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/details" + "pods" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/jenkinspipeline" + "replicationcontrollers" ] }, { @@ -199,44 +182,94 @@ interactions: "" ], "resources": [ - "builds/log" + "resourcequotas" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/source" + "routes" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "cicd-is-disabling-routes/custom-host" + "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" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "clusterroles" + "buildconfigs" ] }, { @@ -255,19 +288,26 @@ interactions: "" ], "resources": [ - "configmaps" + "builds" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigrollbacks" + "configmaps" ] }, { @@ -291,14 +331,21 @@ interactions: }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/instantiate" + "deploymentconfigs/scale" ] }, { @@ -312,19 +359,26 @@ interactions: "" ], "resources": [ - "deploymentconfigs/log" + "events" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/rollback" + "pods" ] }, { @@ -343,7 +397,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/scale" + "replicationcontrollers" ] }, { @@ -357,7 +411,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/status" + "resourcequotas" ] }, { @@ -376,13 +430,18 @@ interactions: "" ], "resources": [ - "endpoints" + "routes" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -390,9 +449,39 @@ interactions: "" ], "resources": [ - "events" + "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", @@ -409,19 +498,7 @@ interactions: "" ], "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" + "buildconfigs" ] }, { @@ -436,11 +513,9 @@ interactions: "watch" ], "attributeRestrictions": null, - "apiGroups": [ - "" - ], + "apiGroups": [], "resources": [ - "imagestreammappings" + "builds" ] }, { @@ -459,20 +534,26 @@ interactions: "" ], "resources": [ - "imagestreams" + "configmaps" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "update" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "imagestreams/layers" + "deploymentconfigs" ] }, { @@ -491,7 +572,7 @@ interactions: "" ], "resources": [ - "imagestreams/secrets" + "deploymentconfigs/scale" ] }, { @@ -505,7 +586,7 @@ interactions: "" ], "resources": [ - "imagestreams/status" + "events" ] }, { @@ -524,13 +605,18 @@ interactions: "" ], "resources": [ - "imagestreamtags" + "pods" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -538,7 +624,7 @@ interactions: "" ], "resources": [ - "limitranges" + "replicationcontrollers" ] }, { @@ -552,13 +638,18 @@ interactions: "" ], "resources": [ - "namespaces" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -566,7905 +657,26 @@ interactions: "" ], "resources": [ - "namespaces/status" + "routes" ] }, { "verbs": [ - "delete" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" + "services" ] } ] diff --git a/test/kubernetes/can-i-no-builds.yaml b/test/kubernetes/can-i-no-builds.yaml index 18067b78dc..c159a22577 100644 --- a/test/kubernetes/can-i-no-builds.yaml +++ b/test/kubernetes/can-i-no-builds.yaml @@ -26,8 +26,13 @@ interactions: "rules": [ { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -35,21 +40,7 @@ interactions: "" ], "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" + "buildconfigs" ] }, { @@ -68,31 +59,7 @@ interactions: "" ], "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" + "builds" ] }, { @@ -111,7 +78,7 @@ interactions: "" ], "resources": [ - "buildconfigs/webhooks" + "configmaps" ] }, { @@ -130,7 +97,7 @@ interactions: "" ], "resources": [ - "buildlogs" + "deploymentconfigs" ] }, { @@ -149,43 +116,59 @@ interactions: "" ], "resources": [ - "builds" + "deploymentconfigs/scale" ] }, { "verbs": [ - "create" + "get", + "list", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/clone" + "events" ] }, { "verbs": [ - "update" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/details" + "pods" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/jenkinspipeline" + "replicationcontrollers" ] }, { @@ -199,44 +182,94 @@ interactions: "" ], "resources": [ - "builds/log" + "resourcequotas" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/source" + "routes" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "cicd-is-disabling-routes/custom-host" + "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" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "clusterroles" + "buildconfigs" ] }, { @@ -255,19 +288,26 @@ interactions: "" ], "resources": [ - "configmaps" + "builds" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigrollbacks" + "configmaps" ] }, { @@ -291,14 +331,21 @@ interactions: }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/instantiate" + "deploymentconfigs/scale" ] }, { @@ -312,19 +359,26 @@ interactions: "" ], "resources": [ - "deploymentconfigs/log" + "events" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/rollback" + "pods" ] }, { @@ -343,7 +397,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/scale" + "replicationcontrollers" ] }, { @@ -357,7 +411,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/status" + "resourcequotas" ] }, { @@ -376,13 +430,18 @@ interactions: "" ], "resources": [ - "endpoints" + "routes" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -390,9 +449,39 @@ interactions: "" ], "resources": [ - "events" + "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", @@ -409,19 +498,7 @@ interactions: "" ], "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" + "buildconfigs" ] }, { @@ -430,7 +507,6 @@ interactions: "delete", "deletecollection", "get", - "list", "patch", "update", "watch" @@ -440,7 +516,7 @@ interactions: "" ], "resources": [ - "imagestreammappings" + "builds" ] }, { @@ -459,20 +535,26 @@ interactions: "" ], "resources": [ - "imagestreams" + "configmaps" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "update" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "imagestreams/layers" + "deploymentconfigs" ] }, { @@ -491,7 +573,7 @@ interactions: "" ], "resources": [ - "imagestreams/secrets" + "deploymentconfigs/scale" ] }, { @@ -505,7 +587,7 @@ interactions: "" ], "resources": [ - "imagestreams/status" + "events" ] }, { @@ -524,13 +606,18 @@ interactions: "" ], "resources": [ - "imagestreamtags" + "pods" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -538,7 +625,7 @@ interactions: "" ], "resources": [ - "limitranges" + "replicationcontrollers" ] }, { @@ -552,13 +639,18 @@ interactions: "" ], "resources": [ - "namespaces" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -566,7906 +658,26 @@ interactions: "" ], "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" + "routes" ] }, { "verbs": [ - "delete" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" + "services" ] } ] diff --git a/test/kubernetes/can-i-no-dc.yaml b/test/kubernetes/can-i-no-dc.yaml index 7d742e428a..20fca2cfcc 100644 --- a/test/kubernetes/can-i-no-dc.yaml +++ b/test/kubernetes/can-i-no-dc.yaml @@ -26,8 +26,13 @@ interactions: "rules": [ { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -35,21 +40,7 @@ interactions: "" ], "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" + "buildconfigs" ] }, { @@ -68,31 +59,7 @@ interactions: "" ], "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" + "builds" ] }, { @@ -111,7 +78,7 @@ interactions: "" ], "resources": [ - "buildconfigs/webhooks" + "configmaps" ] }, { @@ -119,7 +86,6 @@ interactions: "create", "delete", "deletecollection", - "get", "list", "patch", "update", @@ -130,7 +96,7 @@ interactions: "" ], "resources": [ - "buildlogs" + "deploymentconfigs" ] }, { @@ -149,43 +115,59 @@ interactions: "" ], "resources": [ - "builds" + "deploymentconfigs/scale" ] }, { "verbs": [ - "create" + "get", + "list", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/clone" + "events" ] }, { "verbs": [ - "update" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/details" + "pods" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/jenkinspipeline" + "replicationcontrollers" ] }, { @@ -199,44 +181,94 @@ interactions: "" ], "resources": [ - "builds/log" + "resourcequotas" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/source" + "routes" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "cicd-is-disabling-routes/custom-host" + "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" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "clusterroles" + "buildconfigs" ] }, { @@ -255,19 +287,26 @@ interactions: "" ], "resources": [ - "configmaps" + "builds" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigrollbacks" + "configmaps" ] }, { @@ -275,6 +314,7 @@ interactions: "create", "delete", "deletecollection", + "get", "list", "patch", "update", @@ -290,14 +330,21 @@ interactions: }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/instantiate" + "deploymentconfigs/scale" ] }, { @@ -311,19 +358,26 @@ interactions: "" ], "resources": [ - "deploymentconfigs/log" + "events" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/rollback" + "pods" ] }, { @@ -342,7 +396,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/scale" + "replicationcontrollers" ] }, { @@ -356,7 +410,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/status" + "resourcequotas" ] }, { @@ -375,13 +429,18 @@ interactions: "" ], "resources": [ - "endpoints" + "routes" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -389,9 +448,39 @@ interactions: "" ], "resources": [ - "events" + "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", @@ -408,19 +497,7 @@ interactions: "" ], "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" + "buildconfigs" ] }, { @@ -439,7 +516,7 @@ interactions: "" ], "resources": [ - "imagestreammappings" + "builds" ] }, { @@ -458,20 +535,26 @@ interactions: "" ], "resources": [ - "imagestreams" + "configmaps" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "update" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "imagestreams/layers" + "deploymentconfigs" ] }, { @@ -490,7 +573,7 @@ interactions: "" ], "resources": [ - "imagestreams/secrets" + "deploymentconfigs/scale" ] }, { @@ -504,7 +587,7 @@ interactions: "" ], "resources": [ - "imagestreams/status" + "events" ] }, { @@ -523,13 +606,18 @@ interactions: "" ], "resources": [ - "imagestreamtags" + "pods" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -537,7 +625,7 @@ interactions: "" ], "resources": [ - "limitranges" + "replicationcontrollers" ] }, { @@ -551,13 +639,18 @@ interactions: "" ], "resources": [ - "namespaces" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -565,7907 +658,26 @@ interactions: "" ], "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" + "routes" ] }, { "verbs": [ - "delete" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" + "services" ] } ] diff --git a/test/kubernetes/can-i-no-quotas.yaml b/test/kubernetes/can-i-no-quotas.yaml index a9f5dca939..81f66c8d56 100644 --- a/test/kubernetes/can-i-no-quotas.yaml +++ b/test/kubernetes/can-i-no-quotas.yaml @@ -26,8 +26,13 @@ interactions: "rules": [ { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -35,21 +40,7 @@ interactions: "" ], "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" + "buildconfigs" ] }, { @@ -68,31 +59,7 @@ interactions: "" ], "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" + "builds" ] }, { @@ -111,7 +78,7 @@ interactions: "" ], "resources": [ - "buildconfigs/webhooks" + "configmaps" ] }, { @@ -130,7 +97,7 @@ interactions: "" ], "resources": [ - "buildlogs" + "deploymentconfigs" ] }, { @@ -149,49 +116,64 @@ interactions: "" ], "resources": [ - "builds" + "deploymentconfigs/scale" ] }, { "verbs": [ - "create" + "get", + "list", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/clone" + "events" ] }, { "verbs": [ - "update" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/details" + "pods" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/jenkinspipeline" + "replicationcontrollers" ] }, { "verbs": [ "get", - "list", "watch" ], "attributeRestrictions": null, @@ -199,44 +181,94 @@ interactions: "" ], "resources": [ - "builds/log" + "resourcequotas" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/source" + "routes" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "cicd-is-disabling-routes/custom-host" + "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" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "clusterroles" + "buildconfigs" ] }, { @@ -255,19 +287,26 @@ interactions: "" ], "resources": [ - "configmaps" + "builds" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigrollbacks" + "configmaps" ] }, { @@ -291,14 +330,21 @@ interactions: }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/instantiate" + "deploymentconfigs/scale" ] }, { @@ -312,19 +358,26 @@ interactions: "" ], "resources": [ - "deploymentconfigs/log" + "events" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/rollback" + "pods" ] }, { @@ -343,7 +396,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/scale" + "replicationcontrollers" ] }, { @@ -357,7 +410,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/status" + "resourcequotas" ] }, { @@ -376,13 +429,18 @@ interactions: "" ], "resources": [ - "endpoints" + "routes" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -390,9 +448,39 @@ interactions: "" ], "resources": [ - "events" + "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", @@ -409,19 +497,7 @@ interactions: "" ], "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" + "buildconfigs" ] }, { @@ -440,7 +516,7 @@ interactions: "" ], "resources": [ - "imagestreammappings" + "builds" ] }, { @@ -459,20 +535,26 @@ interactions: "" ], "resources": [ - "imagestreams" + "configmaps" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "update" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "imagestreams/layers" + "deploymentconfigs" ] }, { @@ -491,7 +573,7 @@ interactions: "" ], "resources": [ - "imagestreams/secrets" + "deploymentconfigs/scale" ] }, { @@ -505,7 +587,7 @@ interactions: "" ], "resources": [ - "imagestreams/status" + "events" ] }, { @@ -524,13 +606,18 @@ interactions: "" ], "resources": [ - "imagestreamtags" + "pods" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -538,7 +625,7 @@ interactions: "" ], "resources": [ - "limitranges" + "replicationcontrollers" ] }, { @@ -552,13 +639,18 @@ interactions: "" ], "resources": [ - "namespaces" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -566,7906 +658,26 @@ interactions: "" ], "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" + "routes" ] }, { "verbs": [ - "delete" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" + "services" ] } ] diff --git a/test/kubernetes/can-i.yaml b/test/kubernetes/can-i.yaml index a8e37bb7fa..91958c297a 100644 --- a/test/kubernetes/can-i.yaml +++ b/test/kubernetes/can-i.yaml @@ -26,8 +26,13 @@ interactions: "rules": [ { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -35,21 +40,7 @@ interactions: "" ], "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" + "buildconfigs" ] }, { @@ -68,31 +59,7 @@ interactions: "" ], "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" + "builds" ] }, { @@ -111,7 +78,7 @@ interactions: "" ], "resources": [ - "buildconfigs/webhooks" + "configmaps" ] }, { @@ -130,7 +97,7 @@ interactions: "" ], "resources": [ - "buildlogs" + "deploymentconfigs" ] }, { @@ -149,43 +116,59 @@ interactions: "" ], "resources": [ - "builds" + "deploymentconfigs/scale" ] }, { "verbs": [ - "create" + "get", + "list", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/clone" + "events" ] }, { "verbs": [ - "update" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/details" + "pods" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/jenkinspipeline" + "replicationcontrollers" ] }, { @@ -199,44 +182,94 @@ interactions: "" ], "resources": [ - "builds/log" + "resourcequotas" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "builds/source" + "routes" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "cicd-is-disabling-routes/custom-host" + "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" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "clusterroles" + "buildconfigs" ] }, { @@ -255,19 +288,26 @@ interactions: "" ], "resources": [ - "configmaps" + "builds" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigrollbacks" + "configmaps" ] }, { @@ -291,14 +331,21 @@ interactions: }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/instantiate" + "deploymentconfigs/scale" ] }, { @@ -312,19 +359,26 @@ interactions: "" ], "resources": [ - "deploymentconfigs/log" + "events" ] }, { "verbs": [ - "create" + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "deploymentconfigs/rollback" + "pods" ] }, { @@ -343,7 +397,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/scale" + "replicationcontrollers" ] }, { @@ -357,7 +411,7 @@ interactions: "" ], "resources": [ - "deploymentconfigs/status" + "resourcequotas" ] }, { @@ -376,13 +430,18 @@ interactions: "" ], "resources": [ - "endpoints" + "routes" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -390,9 +449,39 @@ interactions: "" ], "resources": [ - "events" + "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", @@ -409,19 +498,7 @@ interactions: "" ], "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" + "buildconfigs" ] }, { @@ -440,7 +517,7 @@ interactions: "" ], "resources": [ - "imagestreammappings" + "builds" ] }, { @@ -459,20 +536,26 @@ interactions: "" ], "resources": [ - "imagestreams" + "configmaps" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", - "update" + "list", + "patch", + "update", + "watch" ], "attributeRestrictions": null, "apiGroups": [ "" ], "resources": [ - "imagestreams/layers" + "deploymentconfigs" ] }, { @@ -491,7 +574,7 @@ interactions: "" ], "resources": [ - "imagestreams/secrets" + "deploymentconfigs/scale" ] }, { @@ -505,7 +588,7 @@ interactions: "" ], "resources": [ - "imagestreams/status" + "events" ] }, { @@ -524,13 +607,18 @@ interactions: "" ], "resources": [ - "imagestreamtags" + "pods" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -538,7 +626,7 @@ interactions: "" ], "resources": [ - "limitranges" + "replicationcontrollers" ] }, { @@ -552,13 +640,18 @@ interactions: "" ], "resources": [ - "namespaces" + "resourcequotas" ] }, { "verbs": [ + "create", + "delete", + "deletecollection", "get", "list", + "patch", + "update", "watch" ], "attributeRestrictions": null, @@ -566,31 +659,7 @@ interactions: "" ], "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" + "routes" ] }, { @@ -609,7864 +678,7 @@ interactions: "" ], "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - } - ] - } - } - 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": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "bindings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "limitranges" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/status" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ] - }, - { - "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": [ - "pods/attach" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/exec" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/log" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/portforward" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/proxy" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotausages" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "impersonate", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services/proxy" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/scale" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigrollbacks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/instantiate" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "apps.openshift.io" - ], - "resources": [ - "deploymentconfigs/status" - ] - }, - { - "verbs": [ - "impersonate" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "userextras/scopes.authorization.openshift.io" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "authorization.openshift.io" - ], - "resources": [ - "selfsubjectrulesreviews" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cicd-is-disabling-cronjobs" - ] - }, - { - "verbs": [ - "delete", - "deletecollection", - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiate" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/instantiatebinary" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildconfigs/webhooks" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "buildlogs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/clone" - ] - }, - { - "verbs": [ - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/details" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/jenkinspipeline" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/log" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "builds/source" - ] - }, - { - "verbs": [ - "edit", - "view" - ], - "attributeRestrictions": null, - "apiGroups": [ - "build.openshift.io" - ], - "resources": [ - "jenkins" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/rollback" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "ingresses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicasets/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "extensions" - ], - "resources": [ - "replicationcontrollers/scale" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimages" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamimports" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreammappings" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams" - ] - }, - { - "verbs": [ - "get", - "update" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/layers" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/secrets" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreams/status" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "image.openshift.io" - ], - "resources": [ - "imagestreamtags" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthaccesstokens" - ] - }, - { - "verbs": [ - "delete" - ], - "attributeRestrictions": null, - "apiGroups": [ - "oauth.openshift.io" - ], - "resources": [ - "oauthauthorizetokens" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ] - }, - { - "verbs": [ - "create", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projectrequests" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "project.openshift.io" - ], - "resources": [ - "projects" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "quota.openshift.io" - ], - "resources": [ - "appliedclusterresourcequotas" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ] - }, - { - "verbs": [ - "create" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "cicd-is-disabling-routes/custom-host" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/status" - ] - }, - { - "verbs": [ - "get", - "list" - ], - "attributeRestrictions": null, - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "processedtemplates" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templateinstances" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "template.openshift.io" - ], - "resources": [ - "templates" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": [ - "user.openshift.io" - ], - "resources": [ - "users" - ], - "resourceNames": [ - "~" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/.well-known/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/api/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/apis/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/healthz/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/oapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/openapi/v2" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/osapi/" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger-2.0.0.pb-v1" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swagger.json" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/swaggerapi/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" - ] - }, - { - "verbs": [ - "get" - ], - "attributeRestrictions": null, - "apiGroups": null, - "resources": [], - "nonResourceURLs": [ - "/version/*" + "services" ] } ] From 86eaae2cd63cbdd4ed400ccdc047d0763919d429 Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Mon, 10 Sep 2018 10:35:45 -0400 Subject: [PATCH 29/36] working paerms - no tests --- controller/deployments.go | 68 ++++++++++++++++++++++++---- controller/space.go | 2 +- design/deployments.go | 3 ++ kubernetes/deployments_kubeclient.go | 2 + 4 files changed, 65 insertions(+), 10 deletions(-) diff --git a/controller/deployments.go b/controller/deployments.go index 8141726073..81d9953249 100644 --- a/controller/deployments.go +++ b/controller/deployments.go @@ -9,13 +9,16 @@ import ( "time" "github.com/fabric8-services/fabric8-wit/app" + witclient "github.com/fabric8-services/fabric8-wit/client" "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/fabric8-services/fabric8-wit/rest" "github.com/goadesign/goa" + goauuid "github.com/goadesign/goa/uuid" errs "github.com/pkg/errors" uuid "github.com/satori/go.uuid" "golang.org/x/net/websocket" @@ -332,8 +335,8 @@ func (c *DeploymentsController) ShowDeploymentStats(ctx *app.ShowDeploymentStats // ShowSpace runs the showSpace action. func (c *DeploymentsController) ShowSpace(ctx *app.ShowSpaceDeploymentsContext) error { - // TODO - get from ctx - //checkPerms := true + // should we ask k8s for permissions on select objects? + checkPerms := ctx.Qp != nil && *ctx.Qp kc, err := c.GetKubeClient(ctx) defer cleanup(kc) @@ -342,8 +345,7 @@ func (c *DeploymentsController) ShowSpace(ctx *app.ShowSpaceDeploymentsContext) } /**** - guid := goauuid.UUID(ctx.SpaceID) - spaceURLStr := rest.AbsoluteURL(ctx.Request, fmt.Sprintf(witclient.ShowSpacePath(guid))) + if checkPerms { canRead, err := kc.CanGetSpace() @@ -388,22 +390,70 @@ func (c *DeploymentsController) ShowSpace(ctx *app.ShowSpaceDeploymentsContext) // Kubernetes doesn't know about space ID, so add it here space.ID = ctx.SpaceID - /** + + if checkPerms { // next, try to get permissions - allowedMethods := []string{"GET"} + guid := goauuid.UUID(ctx.SpaceID) + // permission for all deployments + for _, appl := range space.Attributes.Applications { + for _, depl := range appl.Attributes.Deployments { + deployPath := witclient.SetDeploymentDeploymentsPath(guid, appl.Attributes.Name, depl.Attributes.Name) + deployURLStr := rest.AbsoluteURL(ctx.Request, deployPath) + if err != nil { + return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve path for %s", *kubeSpaceName)) + } + envName := depl.Attributes.Name + methods := []string{} + canScale, err := kc.CanScaleDeployment(envName) + if err != nil { + return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve permission for %s", *kubeSpaceName)) + } + if canScale { + methods = append(methods, "PATCH") + } + canDelete, err := kc.CanDeleteDeployment(envName) + if err != nil { + return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve permission for %s", *kubeSpaceName)) + } + if canDelete { + methods = append(methods, "DELETE") + } + // NOTE: we don't actually allow GET to this endpoint, so don't claim we do by adding "GET" to methods + depl.Links.Self = &app.LinkWithAccess{ + Href: &deployURLStr, + Meta: &app.EndpointAccess{ + Methods: methods, + }, + } + } + } + + // permssions for this space + spaceURLStr := rest.AbsoluteURL(ctx.Request, witclient.ShowSpacePath(guid)) if err != nil { - return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve space %s", *kubeSpaceName)) + return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve path for %s", *kubeSpaceName)) } + + methods := []string{} + canGetSpace, err := kc.CanGetSpace() + if err != nil { + return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve permission for %s", *kubeSpaceName)) + } + if canGetSpace { + methods = append(methods, "GET") + } + // DELETE, etc come later space.Links = &app.SimpleSpaceLinks{ Space: &app.LinkWithAccess{ Href: &spaceURLStr, Meta: &app.EndpointAccess{ - Methods: []string{"GET", "POST", "DELETE", "PATCH"}, + Methods: methods, }, }, } - ***/ + } + res := &app.SimpleSpaceSingle{ Data: space, } diff --git a/controller/space.go b/controller/space.go index 2a865428bd..003f98d0b7 100644 --- a/controller/space.go +++ b/controller/space.go @@ -362,7 +362,7 @@ func deleteOpenShiftResource( // get all the apps and envs path := client.ShowSpaceDeploymentsPath(spaceID) - resp, err := cl.ShowSpaceDeployments(ctx, path) + resp, err := cl.ShowSpaceDeployments(ctx, path, nil) if err != nil { return errors.NewInternalError(ctx, fmt.Errorf("could not get deployments: %v", err)) diff --git a/design/deployments.go b/design/deployments.go index bdb4321b9c..7bb08b709b 100644 --- a/design/deployments.go +++ b/design/deployments.go @@ -16,12 +16,14 @@ var simpleSpace = a.Type("SimpleSpace", func() { a.Example("40bbdd3d-8b5d-4fd6-ac90-7236b669af04") }) a.Attribute("attributes", simpleSpaceAttributes) + a.Attribute("links", simpleSpaceLinks) a.Required("type", "id", "attributes") }) var simpleSpaceLinks = a.Type("SimpleSpaceLinks", func() { a.Description(`relevant links for a space object`) a.Attribute("space", linkWithAccess) + a.Attribute("deployments", linkWithAccess) a.Required("space") }) @@ -190,6 +192,7 @@ var _ = a.Resource("deployments", func() { a.Description("list applications in a space") a.Params(func() { a.Param("spaceID", d.UUID, "ID of the space") + a.Param("qp", d.Boolean, "if true, query and return permissions for this space") }) a.Response(d.OK, simpleSpaceSingle) a.Response(d.Unauthorized, JSONAPIErrors) diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go index 682b871fe9..26b7138d73 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -48,6 +48,8 @@ type KubeClientConfig struct { MetricsGetter // Provides access to the OpenShift REST API, uses default implementation if not set OpenShiftRESTAPIGetter + // if true, query k8s for access rights + QueryPermissions bool } // KubeRESTAPIGetter has a method to access the KubeRESTAPI interface From 8231adf5230b630a551f78d3e636887e9f4b8985 Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Mon, 10 Sep 2018 14:54:14 -0400 Subject: [PATCH 30/36] fixed unit tests --- actions/rules/action_field_set.go | 4 --- controller/comments_blackbox_test.go | 4 ++- controller/deployments_blackbox_test.go | 6 ++-- controller/space_blackbox_test.go | 12 +++---- .../ok-witype-change.res.payload.golden.json | 31 ------------------- controller/work_item_events_blackbox_test.go | 4 --- .../event/event_repository_blackbox_test.go | 2 +- 7 files changed, 13 insertions(+), 50 deletions(-) diff --git a/actions/rules/action_field_set.go b/actions/rules/action_field_set.go index 27ee597b2b..c38b3f0a59 100644 --- a/actions/rules/action_field_set.go +++ b/actions/rules/action_field_set.go @@ -39,11 +39,7 @@ func (act ActionFieldSet) storeWorkItem(wi *workitem.WorkItem) (*workitem.WorkIt var storeResultWorkItem *workitem.WorkItem err := application.Transactional(act.Db, func(appl application.Application) error { var err error -<<<<<<< HEAD - storeResultWorkItem, err = appl.WorkItems().Save(act.Ctx, wi.SpaceID, *wi, *act.UserID) -======= storeResultWorkItem, _, err = appl.WorkItems().Save(act.Ctx, wi.SpaceID, *wi, *act.UserID) ->>>>>>> upstream/master if err != nil { return errs.Wrap(err, "error updating work item") } diff --git a/controller/comments_blackbox_test.go b/controller/comments_blackbox_test.go index e93dab962c..30a652bb69 100644 --- a/controller/comments_blackbox_test.go +++ b/controller/comments_blackbox_test.go @@ -7,6 +7,8 @@ import ( "testing" "time" + "github.com/fabric8-services/fabric8-wit/configuration" + token "github.com/dgrijalva/jwt-go" "github.com/fabric8-services/fabric8-wit/account" "github.com/fabric8-services/fabric8-wit/app" @@ -582,7 +584,7 @@ func (s *CommentsSuite) TestNotificationSendOnUpdate() { assert.Equal(s.T(), c.Data.ID.String(), s.notification.Messages[0].TargetID) } -func CreateSecuredSpace(t *testing.T, db application.DB, config SpaceConfiguration, owner account.Identity, userIDs string) app.Space { +func CreateSecuredSpace(t *testing.T, db application.DB, config *configuration.Registry, owner account.Identity, userIDs string) app.Space { svc := testsupport.ServiceAsSpaceUser("Collaborators-Service", owner, &TestSpaceAuthzService{owner: owner, userIDs: userIDs}) spaceCtrl := NewSpaceController(svc, db, config, &DummyResourceManager{}) require.NotNil(t, spaceCtrl) diff --git a/controller/deployments_blackbox_test.go b/controller/deployments_blackbox_test.go index e26f15c520..1ef0d1bacb 100644 --- a/controller/deployments_blackbox_test.go +++ b/controller/deployments_blackbox_test.go @@ -243,7 +243,7 @@ func TestShowSpace(t *testing.T) { return createOSIOClientMock(t, spaceName), nil } // when - _, result := test.ShowSpaceDeploymentsOK(t, context.Background(), svc, ctrl, space.SystemSpace) + _, result := test.ShowSpaceDeploymentsOK(t, context.Background(), svc, ctrl, space.SystemSpace, nil) // 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") @@ -260,7 +260,7 @@ func TestShowSpace(t *testing.T) { return nil, fmt.Errorf("failure") } // when/then - test.ShowSpaceDeploymentsInternalServerError(t, context.Background(), svc, ctrl, space.SystemSpace) + test.ShowSpaceDeploymentsInternalServerError(t, context.Background(), svc, ctrl, space.SystemSpace, nil) }) t.Run("get space bad request", func(t *testing.T) { @@ -277,7 +277,7 @@ func TestShowSpace(t *testing.T) { return createOSIOClientMock(t, spaceName), nil } // when - test.ShowSpaceDeploymentsBadRequest(t, context.Background(), svc, ctrl, space.SystemSpace) + test.ShowSpaceDeploymentsBadRequest(t, context.Background(), svc, ctrl, space.SystemSpace, nil) // then verify that the Close method was called assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) }) diff --git a/controller/space_blackbox_test.go b/controller/space_blackbox_test.go index b1b4f47ffe..39b74f1ad2 100644 --- a/controller/space_blackbox_test.go +++ b/controller/space_blackbox_test.go @@ -819,7 +819,7 @@ func (s *SpaceControllerTestSuite) TestShowSpace() { svc, ctrl := s.SecuredController(testsupport.TestIdentity) _, created := test.CreateSpaceCreated(t, svc.Context, svc, ctrl, p) // when - res, fetched := test.ShowSpaceOK(t, svc.Context, svc, ctrl, *created.Data.ID, nil, nil) + res, fetched := test.ShowSpaceOK(t, svc.Context, svc, ctrl, *created.Data.ID, nil, nil, nil) // then eTag, lastModified, _ := assertResponseHeaders(t, res) assert.Equal(t, app.ToHTTPTime(getSpaceUpdatedAt(*created)), lastModified) @@ -837,7 +837,7 @@ func (s *SpaceControllerTestSuite) TestShowSpace() { _, created := test.CreateSpaceCreated(t, svc.Context, svc, ctrl, p) // when ifModifiedSince := app.ToHTTPTime(created.Data.Attributes.UpdatedAt.Add(-1 * time.Hour)) - res, _ := test.ShowSpaceOK(t, svc.Context, svc, ctrl, *created.Data.ID, &ifModifiedSince, nil) + res, _ := test.ShowSpaceOK(t, svc.Context, svc, ctrl, *created.Data.ID, nil, &ifModifiedSince, nil) // then eTag, lastModified, _ := assertResponseHeaders(t, res) assert.Equal(t, app.ToHTTPTime(getSpaceUpdatedAt(*created)), lastModified) @@ -853,7 +853,7 @@ func (s *SpaceControllerTestSuite) TestShowSpace() { _, created := test.CreateSpaceCreated(t, svc.Context, svc, ctrl, p) // when ifNoneMatch := "foo_etag" - res, _ := test.ShowSpaceOK(t, svc.Context, svc, ctrl, *created.Data.ID, nil, &ifNoneMatch) + res, _ := test.ShowSpaceOK(t, svc.Context, svc, ctrl, *created.Data.ID, nil, nil, &ifNoneMatch) // then eTag, lastModified, _ := assertResponseHeaders(t, res) assert.Equal(t, app.ToHTTPTime(getSpaceUpdatedAt(*created)), lastModified) @@ -869,7 +869,7 @@ func (s *SpaceControllerTestSuite) TestShowSpace() { _, created := test.CreateSpaceCreated(t, svc.Context, svc, ctrl, p) // when/then ifModifiedSince := app.ToHTTPTime(getSpaceUpdatedAt(*created)) - test.ShowSpaceNotModified(t, svc.Context, svc, ctrl, *created.Data.ID, &ifModifiedSince, nil) + test.ShowSpaceNotModified(t, svc.Context, svc, ctrl, *created.Data.ID, nil, &ifModifiedSince, nil) }) t.Run("not modified with if-none-match header", func(t *testing.T) { @@ -881,7 +881,7 @@ func (s *SpaceControllerTestSuite) TestShowSpace() { _, created := test.CreateSpaceCreated(t, svc.Context, svc, ctrl, p) // when/then ifNoneMatch := generateSpaceTag(*created) - test.ShowSpaceNotModified(t, svc.Context, svc, ctrl, *created.Data.ID, nil, &ifNoneMatch) + test.ShowSpaceNotModified(t, svc.Context, svc, ctrl, *created.Data.ID, nil, nil, &ifNoneMatch) }) }) @@ -890,7 +890,7 @@ func (s *SpaceControllerTestSuite) TestShowSpace() { // given svc, ctrl := s.UnSecuredController() // when/then - test.ShowSpaceNotFound(t, svc.Context, svc, ctrl, uuid.NewV4(), nil, nil) + test.ShowSpaceNotFound(t, svc.Context, svc, ctrl, uuid.NewV4(), nil, nil, nil) }) } diff --git a/controller/test-files/event/list/ok-witype-change.res.payload.golden.json b/controller/test-files/event/list/ok-witype-change.res.payload.golden.json index 54f285a07f..3959ec5609 100755 --- a/controller/test-files/event/list/ok-witype-change.res.payload.golden.json +++ b/controller/test-files/event/list/ok-witype-change.res.payload.golden.json @@ -3,20 +3,6 @@ { "attributes": { "name": "workitemtype", -<<<<<<< HEAD - "timestamp": "0001-01-01T00:00:00Z" - }, - "id": "00000000-0000-0000-0000-000000000001", - "relationships": { - "modifier": { - "data": { - "id": "00000000-0000-0000-0000-000000000002", - "type": "users" - }, - "links": { - "related": "http:///api/users/00000000-0000-0000-0000-000000000002", - "self": "http:///api/users/00000000-0000-0000-0000-000000000002" -======= "revisionId": "00000000-0000-0000-0000-000000000001", "timestamp": "0001-01-01T00:00:00Z" }, @@ -30,17 +16,12 @@ "links": { "related": "http:///api/users/00000000-0000-0000-0000-000000000003", "self": "http:///api/users/00000000-0000-0000-0000-000000000003" ->>>>>>> upstream/master } }, "newValue": { "data": [ { -<<<<<<< HEAD - "id": "00000000-0000-0000-0000-000000000003", -======= "id": "00000000-0000-0000-0000-000000000004", ->>>>>>> upstream/master "type": "workitemtypes" } ] @@ -48,30 +29,18 @@ "oldValue": { "data": [ { -<<<<<<< HEAD - "id": "00000000-0000-0000-0000-000000000004", -======= "id": "00000000-0000-0000-0000-000000000005", ->>>>>>> upstream/master "type": "workitemtypes" } ] }, "workItemType": { "data": { -<<<<<<< HEAD - "id": "00000000-0000-0000-0000-000000000003", - "type": "workitemtypes" - }, - "links": { - "self": "http:///api/workitemtypes/00000000-0000-0000-0000-000000000003" -======= "id": "00000000-0000-0000-0000-000000000004", "type": "workitemtypes" }, "links": { "self": "http:///api/workitemtypes/00000000-0000-0000-0000-000000000004" ->>>>>>> upstream/master } } }, diff --git a/controller/work_item_events_blackbox_test.go b/controller/work_item_events_blackbox_test.go index 1a7ae56e86..27ae474542 100644 --- a/controller/work_item_events_blackbox_test.go +++ b/controller/work_item_events_blackbox_test.go @@ -687,11 +687,7 @@ func (s *TestEvent) TestListEvent() { }, } test.UpdateWorkitemOK(t, svc.Context, svc, workitemCtrl, fxt.WorkItems[0].ID, &payload) -<<<<<<< HEAD:controller/work_item_events_test.go - res, eventList := test.ListWorkItemEventsOK(t, svc.Context, svc, EventCtrl, fxt.WorkItems[0].ID, nil, nil) -======= res, eventList := test.ListWorkItemEventsOK(t, svc.Context, svc, EventCtrl, fxt.WorkItems[0].ID, nil, nil, nil) ->>>>>>> upstream/master:controller/work_item_events_blackbox_test.go safeOverriteHeader(t, res, app.ETag, "1GmclFDDPcLR1ZWPZnykWw==") require.NotEmpty(t, eventList) require.Len(t, eventList.Data, 1) diff --git a/workitem/event/event_repository_blackbox_test.go b/workitem/event/event_repository_blackbox_test.go index 43dc8c0a8d..5eb674dec7 100644 --- a/workitem/event/event_repository_blackbox_test.go +++ b/workitem/event/event_repository_blackbox_test.go @@ -418,7 +418,7 @@ func (s *eventRepoBlackBoxTest) TestList() { s.T().Run("Type change event", func(t *testing.T) { fxt := tf.NewTestFixture(t, s.DB, tf.WorkItems(1), tf.WorkItemTypes(2)) fxt.WorkItems[0].Type = fxt.WorkItemTypes[1].ID - wiNew, err := s.wiRepo.Save(s.Ctx, fxt.WorkItems[0].SpaceID, *fxt.WorkItems[0], fxt.Identities[0].ID) + wiNew, _, err := s.wiRepo.Save(s.Ctx, fxt.WorkItems[0].SpaceID, *fxt.WorkItems[0], fxt.Identities[0].ID) require.NoError(t, err) require.Equal(t, fxt.WorkItemTypes[1].ID, wiNew.Type) eventList, err := s.wiEventRepo.List(s.Ctx, fxt.WorkItems[0].ID) From c9040537f6e760bda7dbe86327cf4defbfc2c548 Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Tue, 11 Sep 2018 14:19:30 -0400 Subject: [PATCH 31/36] get rid of some test files --- Makefile | 10 ---------- Makefile.mine | 8 -------- jstconfig-pp.yaml | 10 ---------- jstconfig-prod.yaml | 16 ---------------- 4 files changed, 44 deletions(-) delete mode 100644 Makefile.mine delete mode 100644 jstconfig-pp.yaml delete mode 100644 jstconfig-prod.yaml diff --git a/Makefile b/Makefile index 2f047bb420..c164c53f22 100644 --- a/Makefile +++ b/Makefile @@ -317,16 +317,6 @@ regenerate: clean-generated generate dev: prebuild-check deps generate $(FRESH_BIN) docker-compose-up F8_DEVELOPER_MODE_ENABLED=true $(FRESH_BIN) - -.PHONY: dev-pp -dev-pp: prebuild-check deps generate $(FRESH_BIN) docker-compose-up - FABRIC8_WIT_API_URL=https://api.prod-preview.openshift.io F8_CONFIG_FILE_PATH=jstconfig-pp.yaml F8_DEVELOPER_MODE_ENABLED=true $(FRESH_BIN) - -.PHONY: dev-prod -dev-prod: prebuild-check deps generate $(FRESH_BIN) docker-compose-up - FABRIC8_WIT_API_URL=https://api.openshift.io F8_CONFIG_FILE_PATH=jstconfig-prod.yaml F8_DEVELOPER_MODE_ENABLED=true $(FRESH_BIN) - - .PHONY: docker-compose-up docker-compose-up: ifeq ($(UNAME_S),Darwin) diff --git a/Makefile.mine b/Makefile.mine deleted file mode 100644 index ba2561422f..0000000000 --- a/Makefile.mine +++ /dev/null @@ -1,8 +0,0 @@ - -.PHONY: dev-pp -dev-pp: prebuild-check deps generate $(FRESH_BIN) docker-compose-up - FABRIC8_WIT_API_URL=https://api.prod-preview.openshift.io F8_CONFIG_FILE_PATH=jstconfig-pp.yaml F8_DEVELOPER_MODE_ENABLED=true $(FRESH_BIN) - -.PHONY: dev-prod -dev-prod: prebuild-check deps generate $(FRESH_BIN) docker-compose-up - FABRIC8_WIT_API_URL=https://api.openshift.io F8_CONFIG_FILE_PATH=jstconfig-prod.yaml F8_DEVELOPER_MODE_ENABLED=true $(FRESH_BIN) diff --git a/jstconfig-pp.yaml b/jstconfig-pp.yaml deleted file mode 100644 index 9621c17e50..0000000000 --- a/jstconfig-pp.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# Auth service URL -aaauth.url : https://auth.openshift.io -auth.url : https://auth.prod-preview.openshift.io -xxauth.url : http://localhost:8089 - -# Openshift Proxy URL -osoproxy.url : https://f8osoproxy-test-dsaas-preview.b6ff.rh-idev.openshiftapps.com - -# enable tenant service -xxxtenant.serviceurl : http://localhost:8080 \ No newline at end of file diff --git a/jstconfig-prod.yaml b/jstconfig-prod.yaml deleted file mode 100644 index 6788aa9b1d..0000000000 --- a/jstconfig-prod.yaml +++ /dev/null @@ -1,16 +0,0 @@ -auth.url : https://auth.openshift.io - -# enable tenant service -xxxtenant.serviceurl : http://localhost:8080 - - -# Openshift Proxy URL -osoproxy.url : https://f8osoproxy-test-dsaas-production.09b5.dsaas.openshiftapps.com -## prod-preview osproxy.url : https://f8osoproxy-test-dsaas-preview.b6ff.rh-idev.openshiftapps.com - -#diagnose.http.address : 127.0.0.1:9088 - -#metrics.http.address : localhost:9090 - - -log.level: info From ed803fa80c10821ebff4d54f7ca5bedbc2d7d224 Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Tue, 11 Sep 2018 14:28:44 -0400 Subject: [PATCH 32/36] get rid of some test files --- 17c1e9de-a89a-494b-91c4-819a013cb3b9 | 1 - kubernetes/deployments_kubeclient.go | 2 -- minishift/kedge/db-tenant.yaml | 13 --------- minishift/kedge/proxy.yml | 19 ------------- minishift/kedge/tenant.yml | 21 --------------- teststack.notgo | 40 ---------------------------- 6 files changed, 96 deletions(-) delete mode 100644 17c1e9de-a89a-494b-91c4-819a013cb3b9 delete mode 100644 minishift/kedge/db-tenant.yaml delete mode 100644 minishift/kedge/proxy.yml delete mode 100644 minishift/kedge/tenant.yml delete mode 100644 teststack.notgo diff --git a/17c1e9de-a89a-494b-91c4-819a013cb3b9 b/17c1e9de-a89a-494b-91c4-819a013cb3b9 deleted file mode 100644 index b8f4237e27..0000000000 --- a/17c1e9de-a89a-494b-91c4-819a013cb3b9 +++ /dev/null @@ -1 +0,0 @@ -{"data":{"attributes":{"created-at":"2018-07-02T04:00:57.297291Z","description":"","name":"rgarg-osiotest1-AGILE-space-2018-07-02T05-00-57","updated-at":"2018-07-02T04:00:57.297291Z","version":0},"id":"17c1e9de-a89a-494b-91c4-819a013cb3b9","links":{"backlog":{"meta":{"totalCount":46},"self":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/backlog"},"filters":"https://api.openshift.io/api/filters","related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9","self":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9","workitemlinktypes":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418/workitemlinktypes","workitemtypes":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418/workitemtypes"},"relationships":{"areas":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/areas"}},"backlog":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/backlog"},"meta":{"totalCount":46}},"codebases":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/codebases"}},"collaborators":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/collaborators"}},"filters":{"links":{"related":"https://api.openshift.io/api/filters"}},"iterations":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/iterations"}},"labels":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/labels"}},"owned-by":{"data":{"id":"02227dc6-f4fe-451b-9549-4c5b7becc5e7","type":"identities"},"links":{"related":"https://api.openshift.io/api/users/02227dc6-f4fe-451b-9549-4c5b7becc5e7"}},"space-template":{"data":{"id":"f405fa41-a8bb-46db-8800-2dbe13da1418","type":"spacetemplates"},"links":{"related":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418","self":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418"}},"workitemlinktypes":{"links":{"related":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418/workitemlinktypes"}},"workitems":{"links":{"related":"https://api.openshift.io/api/spaces/17c1e9de-a89a-494b-91c4-819a013cb3b9/workitems"}},"workitemtypegroups":{"links":{"related":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418/workitemtypegroups"}},"workitemtypes":{"links":{"related":"https://api.openshift.io/api/spacetemplates/f405fa41-a8bb-46db-8800-2dbe13da1418/workitemtypes"}}},"type":"spaces"}} diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go index 26b7138d73..682b871fe9 100644 --- a/kubernetes/deployments_kubeclient.go +++ b/kubernetes/deployments_kubeclient.go @@ -48,8 +48,6 @@ type KubeClientConfig struct { MetricsGetter // Provides access to the OpenShift REST API, uses default implementation if not set OpenShiftRESTAPIGetter - // if true, query k8s for access rights - QueryPermissions bool } // KubeRESTAPIGetter has a method to access the KubeRESTAPI interface diff --git a/minishift/kedge/db-tenant.yaml b/minishift/kedge/db-tenant.yaml deleted file mode 100644 index 812e80d187..0000000000 --- a/minishift/kedge/db-tenant.yaml +++ /dev/null @@ -1,13 +0,0 @@ -name: db-tenant - -deployments: - - containers: - - image: registry.centos.org/postgresql/postgresql:9.6 - env: - - name: POSTGRESQL_ADMIN_PASSWORD - value: mysecretpassword - -services: -- name: db-tenant - ports: - - port: 5432 \ No newline at end of file diff --git a/minishift/kedge/proxy.yml b/minishift/kedge/proxy.yml deleted file mode 100644 index 3a2df3897c..0000000000 --- a/minishift/kedge/proxy.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: proxy - -deployments: - - containers: - - image: "[[ WIT_IMAGE_URL ]]" - env: - - name: F8_AUTH_URL - value: "[[ F8_AUTH_URL ]]" - - name: F8_DEVELOPER_MODE_ENABLED - value: "true" - - name: F8_POSTGRES_HOST - value: "db" - -services: -- name: proxy - type: NodePort - ports: - - port: 8080 - nodePort: 30000 diff --git a/minishift/kedge/tenant.yml b/minishift/kedge/tenant.yml deleted file mode 100644 index e140a7340c..0000000000 --- a/minishift/kedge/tenant.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: tenant - -deployments: - - containers: - - image: "[[ TENANT_IMAGE_URL ]]" - env: - - name: F8_AUTH_URL - value: "[[ F8_AUTH_URL ]]" - - name: F8_DEVELOPER_MODE_ENABLED - value: "true" - - name: F8_POSTGRES_HOST - value: "db-auth" - - name: F8_POSTGRES_PORT - value: "5432" - -services: -- name: tenant - type: NodePort - ports: - - port: 8250 - nodePort: 30000 diff --git a/teststack.notgo b/teststack.notgo deleted file mode 100644 index 6e647580ba..0000000000 --- a/teststack.notgo +++ /dev/null @@ -1,40 +0,0 @@ -package main - -import ( - "fmt" - - _ "github.com/lib/pq" - errs "github.com/pkg/errors" - log "github.com/sirupsen/logrus" -) - -func func0() error { - return errs.Wrap(fmt.Errorf("some detail"), "some func0 context") -} - -func func1() error { - return errs.Wrap(func0(), "some func1 context") -} - -func func2() error { - e := func1() - return errs.WithStack(e) -} - -func main() { - log.WithFields(log.Fields{ - "animal": "walrus", - "number": 1, - "size": 10, - }).Info("A walrus appears") - fmt.Println("start ppercent %") - - fmt.Println("This is a percent %.") - fmt.Print("This is also a percent %\n") - e := func2() - fmt.Printf("part2\n") - if e != nil { - fmt.Printf("error wuz %+v\n", e) - } - fmt.Printf("all done\n") -} From 5f64cc5e23d6badd6d278d41040deef27d5b7580 Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Wed, 12 Sep 2018 10:19:01 -0400 Subject: [PATCH 33/36] get rid of debug code --- controller/space.go | 10 +++------- workitem/workitem_repository.go | 12 ------------ 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/controller/space.go b/controller/space.go index 1a5c1e733a..8cca08bf32 100644 --- a/controller/space.go +++ b/controller/space.go @@ -471,12 +471,8 @@ func (c *SpaceController) List(ctx *app.ListSpaceContext) error { // Show runs the show action. func (c *SpaceController) Show(ctx *app.ShowSpaceContext) error { - var s *space.Space - s = &space.Space{ - Name: "fakespacename", - } - /** + var s *space.Space err := application.Transactional(c.db, func(appl application.Application) error { var err error s, err = appl.Spaces().Load(ctx.Context, ctx.SpaceID) @@ -491,7 +487,7 @@ func (c *SpaceController) Show(ctx *app.ShowSpaceContext) error { if err != nil { return jsonapi.JSONErrorResponse(ctx, err) } - ***/ + var methods []string if ctx.Qp != nil && *ctx.Qp { // 'qp' (QueryPerms query parameter) is true: @@ -527,7 +523,7 @@ func (c *SpaceController) Show(ctx *app.ShowSpaceContext) error { var spaceData *app.Space var err error if ctx.Qp != nil && *ctx.Qp { - spaceData, err = ConvertSpaceFromModel(ctx.Request, *s /*IncludeBacklogTotalCount(ctx.Context, c.db),*/, IncludeMethodAccess(ctx.Context, ctx.Request, methods)) + spaceData, err = ConvertSpaceFromModel(ctx.Request, *s, IncludeBacklogTotalCount(ctx.Context, c.db), IncludeMethodAccess(ctx.Context, ctx.Request, methods)) } else { spaceData, err = ConvertSpaceFromModel(ctx.Request, *s, IncludeBacklogTotalCount(ctx.Context, c.db)) } diff --git a/workitem/workitem_repository.go b/workitem/workitem_repository.go index 6f24f3942d..37105077f4 100644 --- a/workitem/workitem_repository.go +++ b/workitem/workitem_repository.go @@ -626,18 +626,6 @@ func (r *GormWorkItemRepository) Save(ctx context.Context, spaceID uuid.UUID, up // This will be used by the ConvertWorkItemStorageToModel function wiType = newWiType } - // Change of Work Item Type - if wiStorage.Type != updatedWorkItem.Type { - newWiType, err := r.witr.Load(ctx, updatedWorkItem.Type) - if err != nil { - return nil, nil, errs.Wrapf(err, "failed to load workitemtype: %s ", updatedWorkItem.Type) - } - if err := r.ChangeWorkItemType(ctx, wiStorage, wiType, newWiType, spaceID); err != nil { - return nil, nil, errs.Wrapf(err, "unable to change workitem type from %s (ID: %s) to %s (ID: %s)", wiType.Name, wiType.ID, newWiType.Name, newWiType.ID) - } - // This will be used by the ConvertWorkItemStorageToModel function - wiType = newWiType - } tx := r.db.Where("Version = ?", updatedWorkItem.Version).Save(&wiStorage) if err := tx.Error; err != nil { log.Error(ctx, map[string]interface{}{ From 85236ea53ed155b283b6cef29fe795711733899d Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Wed, 12 Sep 2018 14:23:54 -0400 Subject: [PATCH 34/36] small comment cleanup --- controller/deployments.go | 32 +------------------------------- controller/space.go | 2 +- 2 files changed, 2 insertions(+), 32 deletions(-) diff --git a/controller/deployments.go b/controller/deployments.go index 81d9953249..846235d343 100644 --- a/controller/deployments.go +++ b/controller/deployments.go @@ -335,7 +335,7 @@ func (c *DeploymentsController) ShowDeploymentStats(ctx *app.ShowDeploymentStats // ShowSpace runs the showSpace action. func (c *DeploymentsController) ShowSpace(ctx *app.ShowSpaceDeploymentsContext) error { - // should we ask k8s for permissions on select objects? + // should we ask k8s for permissions on select objects? default is no checkPerms := ctx.Qp != nil && *ctx.Qp kc, err := c.GetKubeClient(ctx) @@ -344,36 +344,6 @@ func (c *DeploymentsController) ShowSpace(ctx *app.ShowSpaceDeploymentsContext) return jsonapi.JSONErrorResponse(ctx, err) } - /**** - - - if checkPerms { - canRead, err := kc.CanGetSpace() - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - if !canRead { - // return a non-space with empty permissions - emptySpace := &app.SimpleSpace{ - ID: ctx.SpaceID, - Type: "space", - Links: &app.SimpleSpaceLinks{ - Space: &app.LinkWithAccess{ - Href: &spaceURLStr, - Meta: &app.EndpointAccess{ - Methods: []string{}, - }, - }, - }, - } - res := &app.SimpleSpaceSingle{ - Data: emptySpace, - } - - return ctx.OK(res) - } - } - **/ kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) if err != nil || kubeSpaceName == nil { return jsonapi.JSONErrorResponse(ctx, errors.NewNotFoundError("osio space", ctx.SpaceID.String())) diff --git a/controller/space.go b/controller/space.go index 8cca08bf32..1c31d79c05 100644 --- a/controller/space.go +++ b/controller/space.go @@ -30,7 +30,7 @@ import ( ) const ( - // APIStringTypeCodebase contains the JSON API type for codebases + // APIStringTypeSpace contains the JSON API type for codebases APIStringTypeSpace = "spaces" ) From bfae026b8743d82fd26d1e715b20f742d6691b94 Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Fri, 28 Sep 2018 13:04:53 -0400 Subject: [PATCH 35/36] added more deployment stats permission code --- controller/deployments.go | 68 +++++++++++++++++++++++---------------- design/deployments.go | 2 ++ 2 files changed, 42 insertions(+), 28 deletions(-) diff --git a/controller/deployments.go b/controller/deployments.go index 971019c1cf..1473290795 100644 --- a/controller/deployments.go +++ b/controller/deployments.go @@ -393,19 +393,18 @@ func (c *DeploymentsController) ShowSpace(ctx *app.ShowSpaceDeploymentsContext) // permission for all deployments for _, appl := range space.Attributes.Applications { for _, depl := range appl.Attributes.Deployments { + + envName := depl.Attributes.Name + deployPath := witclient.SetDeploymentDeploymentsPath(guid, appl.Attributes.Name, depl.Attributes.Name) deployURLStr := rest.AbsoluteURL(ctx.Request, deployPath) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve path for %s", *kubeSpaceName)) - } - envName := depl.Attributes.Name methods := []string{} canScale, err := kc.CanScaleDeployment(envName) if err != nil { return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve permission for %s", *kubeSpaceName)) } if canScale { - methods = append(methods, "PATCH") + methods = append(methods, "PUT") } canDelete, err := kc.CanDeleteDeployment(envName) if err != nil { @@ -421,31 +420,44 @@ func (c *DeploymentsController) ShowSpace(ctx *app.ShowSpaceDeploymentsContext) Methods: methods, }, } - } - } - // permssions for this space - spaceURLStr := rest.AbsoluteURL(ctx.Request, witclient.ShowSpacePath(guid)) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve path for %s", *kubeSpaceName)) - } + methods = []string{} + // TODO chekc these are not aliased + deployPath = witclient.ShowDeploymentStatSeriesDeploymentsPath(guid, appl.Attributes.Name, depl.Attributes.Name) + deployURLStr = rest.AbsoluteURL(ctx.Request, deployPath) + canGetStatSeries, err := kc.CanGetDeploymentStatSeries(envName) + if err != nil { + return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve permission for %s", *kubeSpaceName)) + } + if canGetStatSeries { + methods = append(methods, "GET") + } + depl.Links.StatSeries = &app.LinkWithAccess{ + Href: &deployURLStr, + Meta: &app.EndpointAccess{ + Methods: methods, + }, + } - methods := []string{} - canGetSpace, err := kc.CanGetSpace() - if err != nil { - return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve permission for %s", *kubeSpaceName)) - } - if canGetSpace { - methods = append(methods, "GET") - } - // DELETE, etc come later - space.Links = &app.SimpleSpaceLinks{ - Space: &app.LinkWithAccess{ - Href: &spaceURLStr, - Meta: &app.EndpointAccess{ - Methods: methods, - }, - }, + methods = []string{} + // TODO chekc these are not aliased + deployPath = witclient.ShowDeploymentStatsDeploymentsPath(guid, appl.Attributes.Name, depl.Attributes.Name) + deployURLStr = rest.AbsoluteURL(ctx.Request, deployPath) + canGetStats, err := kc.CanGetDeploymentStats(envName) + if err != nil { + return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve permission for %s", *kubeSpaceName)) + } + if canGetStats { + methods = append(methods, "GET") + } + depl.Links.Stats = &app.LinkWithAccess{ + Href: &deployURLStr, + Meta: &app.EndpointAccess{ + Methods: methods, + }, + } + + } } } diff --git a/design/deployments.go b/design/deployments.go index 64828b6510..86eefeee1c 100644 --- a/design/deployments.go +++ b/design/deployments.go @@ -69,6 +69,8 @@ var genericLinksForDeployment = a.Type("GenericLinksForDeployment", func() { a.Attribute("logs", d.String) a.Attribute("application", d.String) a.Attribute("self", linkWithAccess) + a.Attribute("stats", linkWithAccess) + a.Attribute("stat_series", linkWithAccess) }) var simpleDeploymentAttributes = a.Type("SimpleDeploymentAttributes", func() { From 3fe91771e2ee54fda399be842a78b656084dddce Mon Sep 17 00:00:00 2001 From: Simon Tooke Date: Thu, 4 Oct 2018 11:21:51 -0400 Subject: [PATCH 36/36] get rid of tostring(), add (broken) test for qp=true --- controller/deployments.go | 10 +-- controller/deployments_blackbox_test.go | 78 ++++++++++++++++++++++ controller/deployments_urlprovider_test.go | 11 --- 3 files changed, 79 insertions(+), 20 deletions(-) diff --git a/controller/deployments.go b/controller/deployments.go index 1473290795..6e3910f04d 100644 --- a/controller/deployments.go +++ b/controller/deployments.go @@ -2,7 +2,6 @@ package controller import ( "context" - "encoding/json" "io" "net/url" "os" @@ -56,14 +55,6 @@ func NewDeploymentsController(service *goa.Service, config *configuration.Regist } } -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 @@ -413,6 +404,7 @@ func (c *DeploymentsController) ShowSpace(ctx *app.ShowSpaceDeploymentsContext) if canDelete { methods = append(methods, "DELETE") } + depl.Links = &app.GenericLinksForDeployment{} // NOTE: we don't actually allow GET to this endpoint, so don't claim we do by adding "GET" to methods depl.Links.Self = &app.LinkWithAccess{ Href: &deployURLStr, diff --git a/controller/deployments_blackbox_test.go b/controller/deployments_blackbox_test.go index 1ef0d1bacb..f32df86787 100644 --- a/controller/deployments_blackbox_test.go +++ b/controller/deployments_blackbox_test.go @@ -284,6 +284,84 @@ func TestShowSpace(t *testing.T) { }) } +func TestShowSpacePermissions(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", + Links: &app.SimpleSpaceLinks{}, + Attributes: &app.SimpleSpaceAttributes{ + Name: spaceName, + Applications: []*app.SimpleApp{ + &app.SimpleApp{ + Type: "application", + ID: "app1", + Attributes: &app.SimpleAppAttributes{ + Name: "someapp", + Deployments: []*app.SimpleDeployment{ + &app.SimpleDeployment{ + Type: "deployment", + ID: "deploymentid", + Attributes: &app.SimpleDeploymentAttributes{ + Name: "thedeploymentname", + Pods: [][]string{ + []string{"fred"}, + }, + }, + }, + }, + }, + }, + }, + }, + }, nil + } + kubeClientMock.CanGetSpaceFunc = func() (b bool, err error) { + return true, nil + } + kubeClientMock.CanGetApplicationFunc = func() (b bool, err error) { + return true, nil + } + kubeClientMock.CanScaleDeploymentFunc = func(s string) (b bool, err error) { + return true, nil + } + kubeClientMock.CanDeleteDeploymentFunc = func(s string) (b bool, err error) { + return true, nil + } + kubeClientMock.CanGetDeploymentStatSeriesFunc = func(s string) (b bool, err error) { + return true, nil + } + kubeClientMock.CanGetDeploymentStatsFunc = func(s string) (b bool, err error) { + return true, 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 + queryPerms := true + _, result := test.ShowSpaceDeploymentsOK(t, context.Background(), svc, ctrl, space.SystemSpace, &queryPerms) + // then + fmt.Printf("RES = %+v\nDATA = %+v", *result, *result.Data) + 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) + }) +} + func TestSetDeployment(t *testing.T) { // given spaceName := "mySpace" diff --git a/controller/deployments_urlprovider_test.go b/controller/deployments_urlprovider_test.go index 99cd0c11c2..8fe977b416 100644 --- a/controller/deployments_urlprovider_test.go +++ b/controller/deployments_urlprovider_test.go @@ -46,7 +46,6 @@ func getDefaultTenant() (*app.UserService, error) { 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 @@ -290,13 +289,3 @@ func TestTenantCanDeploy(t *testing.T) { }) } } - -////////////////////////////////////////////////////////////////////////////////////////////////// - -func tostring(item interface{}) string { - bytes, err := json.MarshalIndent(item, "", " ") - if err != nil { - return err.Error() - } - return string(bytes) -}