diff options
Diffstat (limited to 'app')
5 files changed, 39 insertions, 1 deletions
diff --git a/app/assets/javascripts/clusters/clusters_bundle.js b/app/assets/javascripts/clusters/clusters_bundle.js index aff32d95db1..b1f992c03ff 100644 --- a/app/assets/javascripts/clusters/clusters_bundle.js +++ b/app/assets/javascripts/clusters/clusters_bundle.js @@ -32,6 +32,7 @@ export default class Clusters { installKnativePath, installPrometheusPath, managePrometheusPath, + hasRbac, clusterType, clusterStatus, clusterStatusReason, @@ -45,6 +46,7 @@ export default class Clusters { this.store.setManagePrometheusPath(managePrometheusPath); this.store.updateStatus(clusterStatus); this.store.updateStatusReason(clusterStatusReason); + this.store.updateRbac(hasRbac); this.service = new ClustersService({ endpoint: statusPath, installHelmEndpoint: installHelmPath, @@ -102,6 +104,7 @@ export default class Clusters { ingressHelpPath: this.state.ingressHelpPath, managePrometheusPath: this.state.managePrometheusPath, ingressDnsHelpPath: this.state.ingressDnsHelpPath, + rbac: this.state.rbac, }, }); }, diff --git a/app/assets/javascripts/clusters/components/applications.vue b/app/assets/javascripts/clusters/components/applications.vue index 489615f1f78..5d19c79570a 100644 --- a/app/assets/javascripts/clusters/components/applications.vue +++ b/app/assets/javascripts/clusters/components/applications.vue @@ -52,6 +52,11 @@ export default { required: false, default: '', }, + rbac: { + type: Boolean, + required: false, + default: false, + }, }, data: () => ({ elasticsearchLogo, @@ -442,6 +447,18 @@ export default { title-link="https://github.com/knative/docs" > <div slot="description"> + <span v-if="!rbac"> + <p v-if="!rbac" class="bs-callout bs-callout-info append-bottom-0"> + {{ + s__(`ClusterIntegration|You must have an RBAC-enabled cluster + to install Knative.`) + }} + <a :href="helpPath" target="_blank" rel="noopener noreferrer"> + {{ __('More information') }} + </a> + </p> + <br /> + </span> <p> {{ s__(`ClusterIntegration|Knative extends Kubernetes to provide @@ -465,7 +482,7 @@ export default { /> </div> </template> - <template v-else-if="helmInstalled"> + <template v-else-if="helmInstalled && rbac"> <div class="form-group"> <label for="knative-domainname"> {{ s__('ClusterIntegration|Knative Domain Name:') }} diff --git a/app/assets/javascripts/clusters/stores/clusters_store.js b/app/assets/javascripts/clusters/stores/clusters_store.js index c750daab112..8f74be4e0e6 100644 --- a/app/assets/javascripts/clusters/stores/clusters_store.js +++ b/app/assets/javascripts/clusters/stores/clusters_store.js @@ -1,4 +1,5 @@ import { s__ } from '../../locale'; +import { parseBoolean } from '../../lib/utils/common_utils'; import { INGRESS, JUPYTER, KNATIVE, CERT_MANAGER } from '../constants'; export default class ClusterStore { @@ -7,6 +8,7 @@ export default class ClusterStore { helpPath: null, ingressHelpPath: null, status: null, + rbac: false, statusReason: null, applications: { helm: { @@ -81,6 +83,10 @@ export default class ClusterStore { this.state.status = status; } + updateRbac(rbac) { + this.state.rbac = parseBoolean(rbac); + } + updateStatusReason(reason) { this.state.statusReason = reason; } diff --git a/app/models/clusters/applications/knative.rb b/app/models/clusters/applications/knative.rb index 0a3168afe68..c572c8bff44 100644 --- a/app/models/clusters/applications/knative.rb +++ b/app/models/clusters/applications/knative.rb @@ -19,6 +19,13 @@ module Clusters self.reactive_cache_key = ->(knative) { [knative.class.model_name.singular, knative.id] } + def set_initial_status + return unless not_installable? + return unless verify_cluster? + + self.status = 'installable' + end + state_machine :status do after_transition any => [:installed] do |application| application.run_after_commit do @@ -99,6 +106,10 @@ module Clusters def install_knative_metrics ["kubectl apply -f #{METRICS_CONFIG}"] if cluster.application_prometheus_available? end + + def verify_cluster? + cluster&.application_helm_available? && cluster&.platform_kubernetes_rbac? + end end end end diff --git a/app/views/clusters/clusters/show.html.haml b/app/views/clusters/clusters/show.html.haml index b1aa8e5d477..89a2dfdd69f 100644 --- a/app/views/clusters/clusters/show.html.haml +++ b/app/views/clusters/clusters/show.html.haml @@ -16,6 +16,7 @@ install_jupyter_path: clusterable.install_applications_cluster_path(@cluster, :jupyter), install_knative_path: clusterable.install_applications_cluster_path(@cluster, :knative), toggle_status: @cluster.enabled? ? 'true': 'false', + has_rbac: @cluster.platform_kubernetes_rbac? ? 'true': 'false', cluster_type: @cluster.cluster_type, cluster_status: @cluster.status_name, cluster_status_reason: @cluster.status_reason, |