class Porkadot::Configs::Kubelet

def addon_path

def addon_path
  File.join(self.target_path, 'addons')
end

def addon_secrets_path

def addon_secrets_path
  File.join(self.target_secrets_path, 'addons')
end

def annotations

def annotations
  return self.raw.annotations || {}
end

def apiserver?

def apiserver?
  self.raw.labels && self.raw.labels.include?(Porkadot::K8S_MASTER_LABEL)
end

def bootstrap_cert_path

def bootstrap_cert_path
  File.join(self.target_path, 'bootstrap.crt')
end

def bootstrap_key_path

def bootstrap_key_path
  File.join(self.target_secrets_path, 'bootstrap.key')
end

def control_plane_endpoint

def control_plane_endpoint
  (self.raw.kubernetes && self.raw.kubernetes.control_plane_endpoint) || self.config.k8s.control_plane_endpoint
end

def hostname

def hostname
  self.raw.hostname || self.name
end

def initialize config, name, raw

def initialize config, name, raw
  @config = config
  @name = name
  @raw = raw || ::Porkadot::Raw.new
  hostname = @raw.hostname || name
  con = { hostname: hostname }
  gcon = config.connection.to_hash
  lcon = @raw.connection ? @raw.connection.to_hash : {}
  @connection = ::Porkadot::Raw.new(con.rmerge(gcon.rmerge(lcon)))
end

def kubelet_config

def kubelet_config
  kc = self.raw.config || ::Porkadot::Raw.new
  kc = kc.merge(self.config.kubernetes.kubelet.config)
  kc.clusterDNS << self.config.k8s.networking.dns_ip.to_s
  kc.clusterDomain = self.config.k8s.networking.dns_domain
  if self.raw.taints
    kc.registerWithTaints = self.raw.taints
  end
  return kc
end

def labels

def labels
  return self.raw.labels || {}
end

def labels_string

def labels_string
  return '' unless self.raw.labels
  return self.raw.labels.map{|v| v.compact.join('=')}.join(',')
end

def target_path

def target_path
  File.join(self.config.assets_dir, 'kubelet', name)
end

def target_secrets_path

def target_secrets_path
  File.join(self.config.secrets_root_dir, 'kubelet', name)
end