summaryrefslogtreecommitdiff
path: root/app/finders/clusters/kubernetes_namespace_finder.rb
blob: 82df96ed79e5884340d890cf982d94ef245a76b7 (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
# frozen_string_literal: true

module Clusters
  class KubernetesNamespaceFinder
    attr_reader :cluster, :project, :environment_name

    def initialize(cluster, project:, environment_name:, allow_blank_token: false)
      @cluster = cluster
      @project = project
      @environment_name = environment_name
      @allow_blank_token = allow_blank_token
    end

    def execute
      find_namespace(with_environment: cluster.namespace_per_environment?)
    end

    private

    attr_reader :allow_blank_token

    def find_namespace(with_environment:)
      relation = if with_environment
                   namespaces.with_environment_name(environment_name)
                 else
                   namespaces
                 end

      relation.find_by_project_id(project.id)
    end

    def namespaces
      if allow_blank_token
        cluster.kubernetes_namespaces
      else
        cluster.kubernetes_namespaces.has_service_account_token
      end
    end
  end
end