Module: HelmWrapper

Defined in:
lib/helm-wrapper.rb,
lib/helm-wrapper/common.rb,
lib/helm-wrapper/version.rb,
lib/helm-wrapper/tasks/push.rb,
lib/helm-wrapper/tasks/apply.rb,
lib/helm-wrapper/shared/chart.rb,
lib/helm-wrapper/tasks/binary.rb,
lib/helm-wrapper/shared/binary.rb,
lib/helm-wrapper/shared/config.rb,
lib/helm-wrapper/shared/latest.rb,
lib/helm-wrapper/shared/logger.rb,
lib/helm-wrapper/shared/runner.rb,
lib/helm-wrapper/tasks/destroy.rb,
lib/helm-wrapper/shared/logging.rb,
lib/helm-wrapper/tasks/template.rb,
lib/helm-wrapper/tasks/validate.rb,
lib/helm-wrapper/shared/variables.rb,
lib/helm-wrapper/shared/auths/azure.rb,
lib/helm-wrapper/shared/auths/common.rb

Defined Under Namespace

Modules: Shared, Tasks

Constant Summary collapse

VERSION =
'1.7.2'

Class Method Summary collapse

Class Method Details

.create_directory(directory:, exists: true, purpose: nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/helm-wrapper/common.rb', line 7

def self.create_directory(directory:, exists: true, purpose: nil)
  return exists if File.directory?(directory)

  result = false

  if not purpose.nil? and purpose.kind_of?(String) and not purpose.strip.empty? then
    @logger.info("Creating directory for: #{purpose}, path: #{directory}")
  else
    @logger.info("Creating directory: #{directory}")
  end

  FileUtils.mkdir_p(directory)

  result = File.directory?(directory)
end

.deployment_tasks(chart:, namespace:, release:, options: Hash.new) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/helm-wrapper.rb', line 25

def self.deployment_tasks(chart:, namespace:, release:, options: Hash.new)
  @logger.info("Building deployment tasks for release: #{release}...")

  @logger.fatal("Chart must be specified as a string!") unless chart.kind_of?(String)
  @logger.fatal("Options must be specified as a hash!") unless options.kind_of?(Hash)

  binary_options = Hash.new
  binary_options["base"]    = options.key?("binary-base")    ? options["binary-base"]    : File.join(Dir.pwd, "vendor", "helm")
  binary_options["version"] = options.key?("binary-version") ? options["binary-version"] : Shared::Latest.instance.version

  chart_options = Hash.new
  chart_options["name"]    = chart
  chart_options["path"]    = nil
  chart_options["repos"]   = options.key?("chart-repos")   ? options["chart-repos"]   : Array.new
  chart_options["version"] = options.key?("chart-version") ? options["chart-version"] : String.new

  config_options = Hash.new
  config_options["atomic"]             = options.key?("config-atomic")             ? options["config-atomic"]             : false
  config_options["auth-azure"]         = options.key?("config-auth-azure")         ? options["config-auth-azure"]         : false
  config_options["auth-azure-options"] = options.key?("config-auth-azure-options") ? options["config-auth-azure-options"] : Hash.new
  config_options["base"]               = options.key?("config-base")               ? options["config-base"]               : File.join(Dir.pwd, "config")
  config_options["namespace"]          = namespace
  config_options["release"]            = release
  config_options["timeout"]            = options.key?("config-timeout")            ? options["config-timeout"]            : "5m0s"
  config_options["wait"]               = options.key?("config-wait")               ? options["config-wait"]               : true

  binary = HelmWrapper::Shared::Binary.new(options: binary_options)
  chart  = HelmWrapper::Shared::Chart.new(options: chart_options)

  tasks = Array.new
  tasks << HelmWrapper::Tasks::Apply.new(binary: binary, chart: chart, options: config_options)
  tasks << HelmWrapper::Tasks::Binary.new(binary: binary)
  tasks << HelmWrapper::Tasks::Destroy.new(binary: binary, chart: chart, options: config_options)
  tasks << HelmWrapper::Tasks::Template.new(binary: binary, chart: chart, options: config_options)
  return tasks
end

.development_tasks(path:, destination: String.new, options: Hash.new) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/helm-wrapper.rb', line 64

def self.development_tasks(path:, destination: String.new, options: Hash.new)
  @logger.info("Building development tasks for path: #{path}...")

  @logger.fatal("Path must be specified as a string!") unless path.kind_of?(String)
  @logger.fatal("Destination must be specified as a string!") unless destination.kind_of?(String)
  @logger.fatal("Options must be specified as a hash!") unless options.kind_of?(Hash)

  binary_options = Hash.new
  binary_options["base"]    = options.key?("binary-base")    ? options["binary-base"]    : File.join(Dir.pwd, "vendor", "helm")
  binary_options["version"] = options.key?("binary-version") ? options["binary-version"] : Shared::Latest.instance.version

  chart_options = Hash.new
  chart_options["name"]  = nil
  chart_options["path"]  = path
  chart_options["repos"] = options.key?("chart-repos")   ? options["chart-repos"]   : Array.new

  binary = HelmWrapper::Shared::Binary.new(options: binary_options)
  chart  = HelmWrapper::Shared::Chart.new(options: chart_options)

  tasks = Array.new
  tasks << HelmWrapper::Tasks::Binary.new(binary: binary)
  tasks << HelmWrapper::Tasks::Push.new(binary: binary, chart: chart, destination: destination) unless destination.strip.empty?
  tasks << HelmWrapper::Tasks::Validate.new(binary: binary, chart: chart)
  return tasks
end

.find(base:, name:, exts:, description: "File") ⇒ Object



25
26
27
28
29
30
31
32
# File 'lib/helm-wrapper/common.rb', line 25

def self.find(base:, name:, exts:, description: "File")
  exts.each do |ext|
    path = File.join(base, name + ext)
    return path if File.file?(path)
  end

  @logger.fatal("#{description} name: #{name} not found in location: #{base}!")
end