diff options
author | Shinya Maeda <shinya@gitlab.com> | 2017-10-23 11:36:35 +0300 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2017-10-23 11:36:35 +0300 |
commit | d0cff7f5855f91b5479f9fdaa39d8d95ec691a9e (patch) | |
tree | 892e9ce3d95fdc19d3b258bac2a0cbb4705cf35f /app/services/clusters/create_service.rb | |
parent | e1d12ba9b988e61afb9317f3a132d6e2caa93923 (diff) |
This works
Diffstat (limited to 'app/services/clusters/create_service.rb')
-rw-r--r-- | app/services/clusters/create_service.rb | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/app/services/clusters/create_service.rb b/app/services/clusters/create_service.rb index 5429bc21256..3f458e25c14 100644 --- a/app/services/clusters/create_service.rb +++ b/app/services/clusters/create_service.rb @@ -1,14 +1,39 @@ module Clusters class CreateService < BaseService - def execute(access_token) - params['gcp_machine_type'] ||= GoogleApi::CloudPlatform::Client::DEFAULT_MACHINE_TYPE + attr_reader :access_token - cluster_params = - params.merge(user: current_user) + def execute(access_token) + @access_token = access_token - project.create_cluster(cluster_params).tap do |cluster| + create_cluster.tap do |cluster| ClusterProvisionWorker.perform_async(cluster.id) if cluster.persisted? end end + + private + + def create_cluster + cluster = nil + + ActiveRecord::Base.transaction do + cluster = Clusters::Cluster.create!(cluster_params) + cluster.projects << project + end + + cluster + rescue ActiveRecord::RecordInvalid => e + e.record + end + + def cluster_params + return @cluster_params if defined?(@cluster_params) + + params[:provider_gcp_attributes][:machine_type] ||= + GoogleApi::CloudPlatform::Client::DEFAULT_MACHINE_TYPE + + params[:provider_gcp_attributes][:access_token] ||= access_token + + @cluster_params = params.merge(user: current_user) + end end end |