diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2018-10-15 18:22:34 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2018-10-15 18:22:34 +0300 |
commit | 201143e9db57ed6f4cd72704387777b4be5ecc34 (patch) | |
tree | ef9825846b6247d89ea3f0601cc26c58f6cd05c8 /app | |
parent | 5caee568ced04d8e9e0a1c83c76b57db2eb8d2db (diff) | |
parent | 19e1024bb874cdb9d912dd7de3cbc8f26daad048 (diff) |
Merge branch '34758-refactor-cluster-services' into 'master'
Refactor Cluster services to enable groups or projects
See merge request gitlab-org/gitlab-ce!22181
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/projects/clusters_controller.rb | 10 | ||||
-rw-r--r-- | app/services/clusters/create_service.rb | 34 | ||||
-rw-r--r-- | app/services/clusters/update_service.rb | 8 |
3 files changed, 28 insertions, 24 deletions
diff --git a/app/controllers/projects/clusters_controller.rb b/app/controllers/projects/clusters_controller.rb index bcdbf48bb35..62adc66fb09 100644 --- a/app/controllers/projects/clusters_controller.rb +++ b/app/controllers/projects/clusters_controller.rb @@ -40,7 +40,7 @@ class Projects::ClustersController < Projects::ApplicationController def update Clusters::UpdateService - .new(project, current_user, update_params) + .new(current_user, update_params) .execute(cluster) if cluster.valid? @@ -73,8 +73,8 @@ class Projects::ClustersController < Projects::ApplicationController def create_gcp @gcp_cluster = ::Clusters::CreateService - .new(project, current_user, create_gcp_cluster_params) - .execute(token_in_session) + .new(current_user, create_gcp_cluster_params) + .execute(project: project, access_token: token_in_session) if @gcp_cluster.persisted? redirect_to project_cluster_path(project, @gcp_cluster) @@ -89,8 +89,8 @@ class Projects::ClustersController < Projects::ApplicationController def create_user @user_cluster = ::Clusters::CreateService - .new(project, current_user, create_user_cluster_params) - .execute(token_in_session) + .new(current_user, create_user_cluster_params) + .execute(project: project, access_token: token_in_session) if @user_cluster.persisted? redirect_to project_cluster_path(project, @user_cluster) diff --git a/app/services/clusters/create_service.rb b/app/services/clusters/create_service.rb index e3e0cfa462c..c6e955800af 100644 --- a/app/services/clusters/create_service.rb +++ b/app/services/clusters/create_service.rb @@ -1,36 +1,34 @@ # frozen_string_literal: true module Clusters - class CreateService < BaseService - attr_reader :access_token + class CreateService + attr_reader :current_user, :params - def execute(access_token = nil) - @access_token = access_token + def initialize(user = nil, params = {}) + @current_user, @params = user, params.dup + end - raise ArgumentError.new(_('Instance does not support multiple Kubernetes clusters')) unless can_create_cluster? + def execute(project:, access_token: nil) + raise ArgumentError.new(_('Instance does not support multiple Kubernetes clusters')) unless can_create_cluster?(project) - create_cluster.tap do |cluster| + cluster_params = params.merge(user: current_user, projects: [project]) + cluster_params[:provider_gcp_attributes].try do |provider| + provider[:access_token] = access_token + end + + create_cluster(cluster_params).tap do |cluster| ClusterProvisionWorker.perform_async(cluster.id) if cluster.persisted? end end private - def create_cluster + def create_cluster(cluster_params) Clusters::Cluster.create(cluster_params) end - def cluster_params - return @cluster_params if defined?(@cluster_params) - - params[:provider_gcp_attributes].try do |provider| - provider[:access_token] = access_token - end - - @cluster_params = params.merge(user: current_user, projects: [project]) - end - - def can_create_cluster? + # EE would override this method + def can_create_cluster?(project) project.clusters.empty? end end diff --git a/app/services/clusters/update_service.rb b/app/services/clusters/update_service.rb index 98fdeec4fb1..25d26e761b1 100644 --- a/app/services/clusters/update_service.rb +++ b/app/services/clusters/update_service.rb @@ -1,7 +1,13 @@ # frozen_string_literal: true module Clusters - class UpdateService < BaseService + class UpdateService + attr_reader :current_user, :params + + def initialize(user = nil, params = {}) + @current_user, @params = user, params.dup + end + def execute(cluster) cluster.update(params) end |