This is an automated email from the ASF dual-hosted git repository.
astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git
The following commit(s) were added to refs/heads/master by this push:
new 91fb165 fix(install): Check permission to create OpenShift
ConsoleCLIDownload resource
91fb165 is described below
commit 91fb16540cc3c623b7f15d10cb3f35a742c0d243
Author: Antonin Stefanutti <[email protected]>
AuthorDate: Tue Feb 4 13:59:39 2020 +0100
fix(install): Check permission to create OpenShift ConsoleCLIDownload
resource
---
pkg/install/openshift.go | 32 ++++++++++++++++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/pkg/install/openshift.go b/pkg/install/openshift.go
index ab88c82..66c85fd 100644
--- a/pkg/install/openshift.go
+++ b/pkg/install/openshift.go
@@ -22,6 +22,9 @@ import (
"fmt"
"reflect"
+ "github.com/Masterminds/semver"
+
+ authorization "k8s.io/api/authorization/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
@@ -30,8 +33,6 @@ import (
"github.com/apache/camel-k/pkg/client"
"github.com/apache/camel-k/pkg/util/defaults"
-
- "github.com/Masterminds/semver"
)
const (
@@ -49,6 +50,29 @@ func installOpenShiftConsoleDownloadLink(ctx
context.Context, c client.Client) e
return nil
}
+ // Check for permission to create the ConsoleCLIDownload resource
+ sar := &authorization.SelfSubjectAccessReview{
+ Spec: authorization.SelfSubjectAccessReviewSpec{
+ ResourceAttributes: &authorization.ResourceAttributes{
+ Group: "console.openshift.io",
+ Resource: "consoleclidownloads",
+ Name: kamelCliDownloadName,
+ Verb: "create",
+ },
+ },
+ }
+
+ sar, err = c.AuthorizationV1().SelfSubjectAccessReviews().Create(sar)
+ if err != nil {
+ if errors.IsForbidden(err) {
+ // Let's just skip the ConsoleCLIDownload resource
creation
+ return nil
+ }
+ return err
+ } else if !sar.Status.Allowed {
+ return nil
+ }
+
// Check for an existing ConsoleCLIDownload resource
existing := &console.ConsoleCLIDownload{}
err = c.Get(ctx, types.NamespacedName{Name: kamelCliDownloadName},
existing)
@@ -77,6 +101,10 @@ func installOpenShiftConsoleDownloadLink(ctx
context.Context, c client.Client) e
// Else delete the older version
err = c.Delete(ctx, existing)
if err != nil {
+ if errors.IsForbidden(err) {
+ // Let's just skip the
ConsoleCLIDownload resource creation
+ return nil
+ }
return err
}
}