Class: CloudSeed::GoogleCloud::ServiceAccountsService

Inherits:
BaseService show all
Defined in:
app/services/cloud_seed/google_cloud/service_accounts_service.rb

Overview

This service deals with GCP Service Accounts in GitLab

Constant Summary

Constants inherited from BaseService

BaseService::UnauthorizedError

Instance Attribute Summary

Attributes inherited from BaseService

#current_user, #params, #project

Instance Method Summary collapse

Methods inherited from BaseService

#initialize

Methods included from BaseServiceUtility

#deny_visibility_level, #event_service, #log_error, #log_info, #notification_service, #system_hook_service, #todo_service, #visibility_level

Methods included from Gitlab::Allowable

#can?, #can_all?, #can_any?

Constructor Details

This class inherits a constructor from BaseService

Instance Method Details

#add_for_project(ref, gcp_project_id, service_account, service_account_key, is_protected) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/services/cloud_seed/google_cloud/service_accounts_service.rb', line 31

def add_for_project(ref, gcp_project_id, , , is_protected)
  create_or_replace_project_vars(
    ref,
    'GCP_PROJECT_ID',
    gcp_project_id,
    is_protected
  )
  create_or_replace_project_vars(
    ref,
    'GCP_SERVICE_ACCOUNT',
    ,
    is_protected
  )
  create_or_replace_project_vars(
    ref,
    'GCP_SERVICE_ACCOUNT_KEY',
    ,
    is_protected
  )
end

#find_for_projectObject

Find GCP Service Accounts in a GitLab project

This method looks up GitLab project’s CI vars and returns Google Cloud Service Accounts combinations aligning GitLab project and ref to GCP projects



20
21
22
23
24
25
26
27
28
29
# File 'app/services/cloud_seed/google_cloud/service_accounts_service.rb', line 20

def find_for_project
  group_vars_by_environment(GCP_KEYS).map do |environment_scope, value|
    {
      ref: environment_scope,
      gcp_project: value['GCP_PROJECT_ID'],
      service_account_exists: value['GCP_SERVICE_ACCOUNT'].present?,
      service_account_key_exists: value['GCP_SERVICE_ACCOUNT_KEY'].present?
    }
  end
end