63 lines
1.1 KiB
Ruby
63 lines
1.1 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Ci
|
||
|
class GenerateKubeconfigService
|
||
|
def initialize(build)
|
||
|
@build = build
|
||
|
@template = Gitlab::Kubernetes::Kubeconfig::Template.new
|
||
|
end
|
||
|
|
||
|
def execute
|
||
|
template.add_cluster(
|
||
|
name: cluster_name,
|
||
|
url: Gitlab::Kas.tunnel_url
|
||
|
)
|
||
|
|
||
|
agents.each do |agent|
|
||
|
user = user_name(agent)
|
||
|
|
||
|
template.add_user(
|
||
|
name: user,
|
||
|
token: agent_token(agent)
|
||
|
)
|
||
|
|
||
|
template.add_context(
|
||
|
name: context_name(agent),
|
||
|
cluster: cluster_name,
|
||
|
user: user
|
||
|
)
|
||
|
end
|
||
|
|
||
|
template
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
attr_reader :build, :template
|
||
|
|
||
|
def agents
|
||
|
build.pipeline.authorized_cluster_agents
|
||
|
end
|
||
|
|
||
|
def cluster_name
|
||
|
'gitlab'
|
||
|
end
|
||
|
|
||
|
def user_name(agent)
|
||
|
['agent', agent.id].join(delimiter)
|
||
|
end
|
||
|
|
||
|
def context_name(agent)
|
||
|
[agent.project.full_path, agent.name].join(delimiter)
|
||
|
end
|
||
|
|
||
|
def agent_token(agent)
|
||
|
['ci', agent.id, build.token].join(delimiter)
|
||
|
end
|
||
|
|
||
|
def delimiter
|
||
|
':'
|
||
|
end
|
||
|
end
|
||
|
end
|