diff options
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.rb | 25 |
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 |