diff options
author | Dennis Tang <dtang@gitlab.com> | 2018-06-06 06:04:40 +0300 |
---|---|---|
committer | Dennis Tang <dtang@gitlab.com> | 2018-06-06 06:04:40 +0300 |
commit | edb89f555b25aa4d4aad7a3bdf5a0bd75bd076fc (patch) | |
tree | b186f1b139edc5fa71d7bd3c9469761380fa4c41 /app/controllers/projects/clusters | |
parent | 151b6b2b2b60debccdf09eda5dbe9be31cc395f6 (diff) |
split into gcp and user controllers again
Diffstat (limited to 'app/controllers/projects/clusters')
-rw-r--r-- | app/controllers/projects/clusters/gcp_controller.rb | 41 | ||||
-rw-r--r-- | app/controllers/projects/clusters/user_controller.rb | 42 |
2 files changed, 83 insertions, 0 deletions
diff --git a/app/controllers/projects/clusters/gcp_controller.rb b/app/controllers/projects/clusters/gcp_controller.rb new file mode 100644 index 00000000000..ac9a906fe47 --- /dev/null +++ b/app/controllers/projects/clusters/gcp_controller.rb @@ -0,0 +1,41 @@ +class Projects::Clusters::GcpController < Projects::ApplicationController + include ClustersHelper + before_action :authorize_read_cluster! + before_action :authorize_create_cluster!, only: [:create] + helper_method :gcp_authorize_url + helper_method :token_in_session + helper_method :valid_gcp_token + + def create + @cluster = ::Clusters::CreateService + .new(project, current_user, create_params) + .execute(token_in_session) + + if @cluster.persisted? + redirect_to project_cluster_path(project, @cluster) + else + @gcp_cluster = @cluster + user_cluster + + render 'projects/clusters/new', locals: { active_tab: 'gcp' } + end + end + + private + + def create_params + params.require(:cluster).permit( + :enabled, + :name, + :environment_scope, + provider_gcp_attributes: [ + :gcp_project_id, + :zone, + :num_nodes, + :machine_type + ]).merge( + provider_type: :gcp, + platform_type: :kubernetes + ) + end +end diff --git a/app/controllers/projects/clusters/user_controller.rb b/app/controllers/projects/clusters/user_controller.rb new file mode 100644 index 00000000000..9da6a60e6b3 --- /dev/null +++ b/app/controllers/projects/clusters/user_controller.rb @@ -0,0 +1,42 @@ +class Projects::Clusters::UserController < Projects::ApplicationController + include ClustersHelper + before_action :authorize_read_cluster! + before_action :authorize_create_cluster!, only: [:create] + helper_method :gcp_authorize_url + helper_method :token_in_session + helper_method :valid_gcp_token + + def create + @cluster = ::Clusters::CreateService + .new(project, current_user, create_params) + .execute + + if @cluster.persisted? + redirect_to project_cluster_path(project, @cluster) + else + @user_cluster = @cluster + gcp_cluster + + render 'projects/clusters/new', locals: { active_tab: 'user' } + end + end + + private + + def create_params + params.require(:cluster).permit( + :enabled, + :name, + :environment_scope, + platform_kubernetes_attributes: [ + :namespace, + :api_url, + :token, + :ca_cert + ]).merge( + provider_type: :user, + platform_type: :kubernetes + ) + end +end + |