class Porkadot::Assets::Kubelet

def bootstrap_cert(refresh=false)

def bootstrap_cert(refresh=false)
  return @bootstrap_cert if defined?(@bootstrap_cert)
  if File.file?(config.bootstrap_cert_path) and !refresh
    self.logger.debug("--> Bootstrap cert already exists, skipping: #{config.bootstrap_cert_path}")
    @bootstrap_cert = OpenSSL::X509::Certificate.new(File.read(config.bootstrap_cert_path))
  else
    @bootstrap_cert = certs._client_cert(
      config.bootstrap_cert_path,
      "/O=porkadot:node-bootstrappers/CN=node-bootstrapper:#{config.name}",
      self.bootstrap_key,
      self.certs.ca_cert(false),
      self.certs.ca_key
    )
  end
  return @bootstrap_cert
end

def bootstrap_key

def bootstrap_key
  @bootstrap_key ||= certs.private_key(config.bootstrap_key_path)
  return @bootstrap_key
end

def initialize config

def initialize config
  @config = config
  @logger = config.logger
  @global_config = config.config
  @certs = Porkadot::Assets::Certs::Kubernetes.new(global_config)
end

def render

def render
  logger.info "--> Rendering #{config.name} node"
  unless File.directory?(config.target_path)
    FileUtils.mkdir_p(config.target_path)
  end
  unless File.directory?(config.target_secrets_path)
    FileUtils.mkdir_p(config.target_secrets_path)
  end
  ca_data = certs.ca_cert.to_pem
  ca_data = Base64.strict_encode64(ca_data)
  render_erb 'bootstrap-kubelet.conf', ca_data: ca_data
  render_bootstrap_certs
  render_erb 'config.yaml'
  render_erb 'kubelet.service'
  render_erb 'initiatorname.iscsi'
  render_erb 'metadata.json'
end

def render_bootstrap_certs

def render_bootstrap_certs
  logger.info "----> bootstrap certs"
  self.bootstrap_key
  self.bootstrap_cert(true)
end