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:
Diffstat (limited to 'app/services/cloud_seed/google_cloud/gcp_region_add_or_replace_service.rb')
-rw-r--r--app/services/cloud_seed/google_cloud/gcp_region_add_or_replace_service.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/app/services/cloud_seed/google_cloud/gcp_region_add_or_replace_service.rb b/app/services/cloud_seed/google_cloud/gcp_region_add_or_replace_service.rb
new file mode 100644
index 00000000000..11a644b3e9d
--- /dev/null
+++ b/app/services/cloud_seed/google_cloud/gcp_region_add_or_replace_service.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+module CloudSeed
+ module GoogleCloud
+ class GcpRegionAddOrReplaceService < ::CloudSeed::GoogleCloud::BaseService
+ def execute(environment, region)
+ gcp_region_key = Projects::GoogleCloud::GcpRegionsController::GCP_REGION_CI_VAR_KEY
+
+ change_params = { variable_params: { key: gcp_region_key, value: region, environment_scope: environment } }
+ filter_params = { key: gcp_region_key, filter: { environment_scope: environment } }
+
+ existing_variable = ::Ci::VariablesFinder.new(project, filter_params).execute.first
+
+ if existing_variable
+ change_params[:action] = :update
+ change_params[:variable] = existing_variable
+ else
+ change_params[:action] = :create
+ end
+
+ ::Ci::ChangeVariableService.new(container: project, current_user: current_user, params: change_params).execute
+ end
+ end
+ end
+end