46 lines
1.2 KiB
Ruby
46 lines
1.2 KiB
Ruby
|
# 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
|