class HelmCLI
Constants
- VERSION
Attributes
executable[R]
kubeconfig_path[R]
Public Class Methods
new(kubeconfig_path, executable = HelmRb.executable)
click to toggle source
# File lib/helm-cli.rb, line 13 def initialize(kubeconfig_path, executable = HelmRb.executable) @kubeconfig_path = kubeconfig_path @executable = executable end
Public Instance Methods
add_repo(name, url)
click to toggle source
# File lib/helm-cli.rb, line 22 def add_repo(name, url) cmd = base_cmd + ['repo', 'add', name, url] systemm(cmd) end
get_release(release, namespace: 'default')
click to toggle source
# File lib/helm-cli.rb, line 32 def get_release(release, namespace: 'default') cmd = base_cmd + ['get', 'all', release, '-n', namespace] backticks(cmd).tap do unless last_status.success? raise MissingReleaseError, "could not get release '#{release}': helm "\ "exited with status code #{last_status.exitstatus}" end end end
install_chart(chart, release:, version:, namespace: 'default', params: {})
click to toggle source
# File lib/helm-cli.rb, line 49 def install_chart(chart, release:, version:, namespace: 'default', params: {}) cmd = base_cmd + ['install', release, chart] cmd += ['--version', version] cmd += ['-n', namespace] params.each_pair do |key, value| cmd += ['--set', "#{key}=#{value}"] end systemm(cmd) unless last_status.success? raise InstallError, "could not install chart '#{release}': helm "\ "exited with status code #{last_status.exitstatus}" end end
last_status()
click to toggle source
# File lib/helm-cli.rb, line 18 def last_status Thread.current[status_key] end
release_exists?(release, namespace: 'default')
click to toggle source
# File lib/helm-cli.rb, line 42 def release_exists?(release, namespace: 'default') get_release(release, namespace: namespace) last_status.exitstatus == 0 rescue MissingReleaseError false end
stderr()
click to toggle source
# File lib/helm-cli.rb, line 102 def stderr Thread.current[stderr_key] || STDERR end
stderr=(new_stderr)
click to toggle source
# File lib/helm-cli.rb, line 106 def stderr=(new_stderr) Thread.current[stderr_key] = new_stderr end
stdout()
click to toggle source
# File lib/helm-cli.rb, line 94 def stdout Thread.current[stdout_key] || STDOUT end
stdout=(new_stdout)
click to toggle source
# File lib/helm-cli.rb, line 98 def stdout=(new_stdout) Thread.current[stdout_key] = new_stdout end
update_repos()
click to toggle source
# File lib/helm-cli.rb, line 27 def update_repos cmd = base_cmd + ['repo', 'update'] systemm(cmd) end
upgrade_chart(chart, release:, version:, namespace: 'default', params: {})
click to toggle source
# File lib/helm-cli.rb, line 66 def upgrade_chart(chart, release:, version:, namespace: 'default', params: {}) cmd = base_cmd + ['upgrade', release, chart] cmd += ['--version', version] cmd += ['-n', namespace] params.each_pair do |key, value| cmd += ['--set', "#{key}=#{value}"] end systemm(cmd) unless last_status.success? raise InstallError, "could not upgrade chart '#{release}': helm "\ "exited with status code #{last_status.exitstatus}" end end
with_pipes(out = STDOUT, err = STDERR) { || ... }
click to toggle source
# File lib/helm-cli.rb, line 83 def with_pipes(out = STDOUT, err = STDERR) previous_stdout = self.stdout previous_stderr = self.stderr self.stdout = out self.stderr = err yield ensure self.stdout = previous_stdout self.stderr = previous_stderr end
Private Instance Methods
backticks(cmd)
click to toggle source
# File lib/helm-cli.rb, line 116 def backticks(cmd) cmd_s = cmd.join(' ') result = StringIO.new Open3.popen3(cmd_s) do |p_stdin, p_stdout, p_stderr, wait_thread| Thread.new do begin p_stdout.each { |line| result.puts(line) } rescue IOError end end Thread.new(stderr) do |t_stderr| begin p_stderr.each { |line| t_stderr.puts(line) } rescue IOError end end p_stdin.close self.last_status = wait_thread.value wait_thread.join end result.string end
base_cmd()
click to toggle source
# File lib/helm-cli.rb, line 112 def base_cmd [executable, '--kubeconfig', kubeconfig_path] end
last_status=(status)
click to toggle source
# File lib/helm-cli.rb, line 167 def last_status=(status) Thread.current[status_key] = status end
status_key()
click to toggle source
# File lib/helm-cli.rb, line 171 def status_key :helm_cli_last_status end
stderr_key()
click to toggle source
# File lib/helm-cli.rb, line 179 def stderr_key :helm_cli_stderr end
stdout_key()
click to toggle source
# File lib/helm-cli.rb, line 175 def stdout_key :helm_cli_stdout end
systemm(cmd)
click to toggle source
# File lib/helm-cli.rb, line 143 def systemm(cmd) cmd_s = cmd.join(' ') Open3.popen3(cmd_s) do |p_stdin, p_stdout, p_stderr, wait_thread| Thread.new(stdout) do |t_stdout| begin p_stdout.each { |line| t_stdout.puts(line) } rescue IOError end end Thread.new(stderr) do |t_stderr| begin p_stderr.each { |line| t_stderr.puts(line) }\ rescue IOError end end p_stdin.close self.last_status = wait_thread.value wait_thread.join end end