Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2017-10-23 11:36:35 +0300
committerShinya Maeda <shinya@gitlab.com>2017-10-23 11:36:35 +0300
commitd0cff7f5855f91b5479f9fdaa39d8d95ec691a9e (patch)
tree892e9ce3d95fdc19d3b258bac2a0cbb4705cf35f /app/services/clusters/create_service.rb
parente1d12ba9b988e61afb9317f3a132d6e2caa93923 (diff)
This works
Diffstat (limited to 'app/services/clusters/create_service.rb')
-rw-r--r--app/services/clusters/create_service.rb35
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