diff options
Diffstat (limited to 'app/controllers/clusters/integrations_controller.rb')
-rw-r--r-- | app/controllers/clusters/integrations_controller.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/app/controllers/clusters/integrations_controller.rb b/app/controllers/clusters/integrations_controller.rb new file mode 100644 index 00000000000..a8c7eb10136 --- /dev/null +++ b/app/controllers/clusters/integrations_controller.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module Clusters + class IntegrationsController < ::Clusters::BaseController + before_action :cluster + before_action :authorize_admin_cluster!, only: [:create_or_update] + + def create_or_update + service_response = Clusters::Integrations::CreateService + .new(container: clusterable, cluster: cluster, current_user: current_user, params: cluster_integration_params) + .execute + + if service_response.success? + redirect_to cluster.show_path(params: { tab: 'integrations' }), notice: service_response.message + else + redirect_to cluster.show_path(params: { tab: 'integrations' }), alert: service_response.message + end + end + + private + + def clusterable + raise NotImplementedError + end + + def cluster_integration_params + params.require(:integration).permit(:application_type, :enabled) + end + + def cluster + @cluster ||= clusterable.clusters.find(params[:cluster_id]).present(current_user: current_user) + end + end +end |