summaryrefslogtreecommitdiff
path: root/app/services/clusters/build_kubernetes_namespace_service.rb
blob: 2574f77bbf9b2a4ea03d29c06ac4aa24f890d048 (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
# frozen_string_literal: true

module Clusters
  class BuildKubernetesNamespaceService
    attr_reader :cluster, :environment

    def initialize(cluster, environment:)
      @cluster = cluster
      @environment = environment
    end

    def execute
      cluster.kubernetes_namespaces.build(attributes)
    end

    private

    def attributes
      attributes = {
        project: environment.project,
        namespace: namespace,
        service_account_name: "#{namespace}-service-account"
      }

      attributes[:cluster_project] = cluster.cluster_project if cluster.project_type?
      attributes[:environment] = environment if cluster.namespace_per_environment?

      attributes
    end

    def namespace
      Gitlab::Kubernetes::DefaultNamespace.new(cluster, project: environment.project).from_environment_slug(environment.slug)
    end
  end
end