summaryrefslogtreecommitdiff
path: root/app/services/clusters/kubernetes/create_or_update_namespace_service.rb
blob: 15be8446cc08e62d56a0e908112d30b50fecbe56 (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
37
38
39
40
41
42
43
44
45
# frozen_string_literal: true

module Clusters
  module Kubernetes
    class CreateOrUpdateNamespaceService
      def initialize(cluster:, kubernetes_namespace:)
        @cluster = cluster
        @kubernetes_namespace = kubernetes_namespace
        @platform = cluster.platform
      end

      def execute
        create_project_service_account
        configure_kubernetes_token

        kubernetes_namespace.save!
      end

      private

      attr_reader :cluster, :kubernetes_namespace, :platform

      def create_project_service_account
        Clusters::Kubernetes::CreateOrUpdateServiceAccountService.namespace_creator(
          platform.kubeclient,
          service_account_name: kubernetes_namespace.service_account_name,
          service_account_namespace: kubernetes_namespace.namespace,
          rbac: platform.rbac?
        ).execute
      end

      def configure_kubernetes_token
        kubernetes_namespace.service_account_token = fetch_service_account_token
      end

      def fetch_service_account_token
        Clusters::Kubernetes::FetchKubernetesTokenService.new(
          platform.kubeclient,
          kubernetes_namespace.token_name,
          kubernetes_namespace.namespace
        ).execute
      end
    end
  end
end