summaryrefslogtreecommitdiff
path: root/app/services/ci/integrate_cluster_service.rb
blob: d5b1ccd345dd168f6279b580e61c16bc976a2b72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
module Ci
  class IntegrateClusterService
    def execute(cluster, endpoint, ca_cert, token, username, password)
      kubernetes_service ||= cluster.project.find_or_initialize_service('kubernetes')

      Ci::Cluster.transaction do
        # Update service
        kubernetes_service.attributes = {
          active: true,
          api_url: endpoint,
          ca_pem: ca_cert,
          namespace: cluster.project_namespace,
          token: token
        }

        kubernetes_service.save!

        # Save info in cluster record
        cluster.update!(
          enabled: true,
          service: kubernetes_service,
          username: username,
          password: password,
          kubernetes_token: token,
          ca_cert: ca_cert,
          endpoint: endpoint,
          gcp_token: nil,
          status: Ci::Cluster.statuses[:created]
        )
      end

    rescue ActiveRecord::RecordInvalid => e
      cluster.error!("Failed to integrate cluster into kubernetes_service: #{e.message}")
    end
  end
end