35 lines
864 B
Ruby
35 lines
864 B
Ruby
# 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
|