class KubeDeployTools::ConfigMap

Public Class Methods

new(name, from_file, namespace = 'default', labels = nil) click to toggle source
# File lib/kube_deploy_tools/make_configmap.rb, line 7
def initialize(name, from_file, namespace = 'default', labels = nil)
  @name = name
  @namespace = namespace
  @labels = labels
  @from_file = from_file
end

Public Instance Methods

base() click to toggle source
# File lib/kube_deploy_tools/make_configmap.rb, line 14
def base
  {
    'apiVersion' => 'v1',
    'kind' => 'ConfigMap',
    'metadata' => {},
    'data' => {}
  }
end
target_hash() click to toggle source
# File lib/kube_deploy_tools/make_configmap.rb, line 23
def target_hash
  res = base
  res['metadata']['name'] = @name
  res['metadata']['namespace'] = @namespace
  res['metadata']['labels'] = @labels if @labels
  @from_file.each do |from_file|
    if from_file.include? '='
      # e.g. --from-file=config.yml=/path/to/configs/production.yml
      configmap_key, filepath = from_file.split("=", 2)
      res['data'][configmap_key] = File.read(filepath)
    elsif File.file?(from_file)
      # e.g. --from-file=/path/to/configs/production.yml
      configmap_key = File.basename(from_file)
      filepath = from_file
      res['data'][configmap_key] = File.read(filepath)
    elsif File.directory?(from_file)
      # e.g. --from-file=/path/to/configs/
      Dir[File.join(from_file, '*')].each do |filepath|
        # NOTE(jmodes): Multiple levels of directories are not supported.
        next if File.directory?(filepath)
        configmap_key = File.basename(filepath)
        res['data'][configmap_key] = File.read(filepath)
      end
    end
  end
  res
end