Extract Helm::ClientCommand for shared commands

This commit is contained in:
Dylan Griffith 2018-11-15 14:13:32 +00:00
parent fe1469e12f
commit a71b3f6a7c
4 changed files with 33 additions and 32 deletions

View file

@ -66,6 +66,9 @@ module Clusters
end
before_transition any => [:installed, :updated] do |app_status, _|
# When installing any application we are also performing an update
# of tiller (see Gitlab::Kubernetes::Helm::ClientCommand) so
# therefore we need to reflect that in the database.
app_status.cluster.application_helm.update!(version: Gitlab::Kubernetes::Helm::HELM_VERSION)
end
end

View file

@ -0,0 +1,26 @@
module Gitlab
module Kubernetes
module Helm
module ClientCommand
def init_command
# Here we are always upgrading to the latest version of Tiller when
# installing an app. We ensure the helm version stored in the
# database is correct by also updating this after transition to
# :installed,:updated in Clusters::Concerns::ApplicationStatus
'helm init --upgrade --tiller-namespace gitlab-managed-apps'
end
def wait_for_tiller_command
# This is necessary to give Tiller time to restart after upgrade.
# Ideally we'd be able to use --wait but cannot because of
# https://github.com/helm/helm/issues/4855
'sleep 30'
end
def repository_command
['helm', 'repo', 'add', name, repository].shelljoin if repository
end
end
end
end
end

View file

@ -3,6 +3,7 @@ module Gitlab
module Helm
class InstallCommand
include BaseCommand
include ClientCommand
attr_reader :name, :files, :chart, :version, :repository, :preinstall, :postinstall
@ -20,10 +21,7 @@ module Gitlab
def generate_script
super + [
init_command,
# Sleep is necessary to give Tiller time to restart after upgrade.
# Ideally we'd be able to use --wait but cannot because of
# https://github.com/helm/helm/issues/4855
sleep_command,
wait_for_tiller_command,
repository_command,
repository_update_command,
preinstall_command,
@ -38,18 +36,6 @@ module Gitlab
private
def init_command
'helm init --upgrade --tiller-namespace gitlab-managed-apps'
end
def sleep_command
'sleep 30'
end
def repository_command
['helm', 'repo', 'add', name, repository].shelljoin if repository
end
def repository_update_command
'helm repo update' if repository
end

View file

@ -5,6 +5,7 @@ module Gitlab
module Helm
class UpgradeCommand
include BaseCommand
include ClientCommand
attr_reader :name, :chart, :version, :repository, :files
@ -20,10 +21,7 @@ module Gitlab
def generate_script
super + [
init_command,
# Sleep is necessary to give Tiller time to restart after upgrade.
# Ideally we'd be able to use --wait but cannot because of
# https://github.com/helm/helm/issues/4855
sleep_command,
wait_for_tiller_command,
repository_command,
script_command
].compact.join("\n")
@ -39,18 +37,6 @@ module Gitlab
private
def init_command
'helm init --upgrade --tiller-namespace gitlab-managed-apps'
end
def sleep_command
'sleep 30'
end
def repository_command
"helm repo add #{name} #{repository}" if repository
end
def script_command
upgrade_flags = "#{optional_version_flag}#{optional_tls_flags}" \
" --reset-values" \