lib/porkadot/cmd/render.rb



module Porkadot; module Cmd; module Render
  class Cli < Porkadot::SubCommandBase
    include Porkadot::Utils

    default_task :all
    desc "all", "Render all assets to deploy Kubernetes cluster"
    def all
      invoke "porkadot:cmd:render:certs:cli:all", [], options
      invoke :kubelet, [], options
      invoke :etcd, [], options
      invoke :bootstrap, [], options
      invoke :kubernetes, [], options
    end

    desc "certs", "Render certificates to deploy Kubernetes"
    subcommand "certs", Porkadot::Cmd::Render::Certs::Cli

    desc "kubelet", "Render kubelet related files"
    option :node, type: :string
    def kubelet
      logger.info "Generating kubelet related files"
      kubelets = Porkadot::Assets::KubeletList.new(self.config)
      if node = options[:node]
        kubelets[node].render
      else
        kubelets.render
      end
      ""
    end

    desc "etcd", "Render etcd related files"
    option :node, type: :string
    def etcd
      logger.info "Generating etcd related files"
      etcds = Porkadot::Assets::EtcdList.new(self.config)
      if node = options[:node]
        etcds[node].render
      else
        etcds.render
      end
      ""
    end

    desc "bootstrap", "Render bootstrap related files"
    def bootstrap
      logger.info "Generating bootstrap related files"
      bootstrap = Porkadot::Assets::Bootstrap.new(self.config)
      kubelet = Porkadot::Assets::Kubelet.new(self.config.bootstrap.kubelet_config)
      kubelet.render
      bootstrap.render
      ""
    end

    desc "kubernetes", "Render kubernetes manifests"
    def kubernetes
      logger.info "Generating kubernetes manifests"
      k8s = Porkadot::Assets::Kubernetes.new(self.config)
      k8s.render
      ""
    end

    def self.subcommand_prefix
      'render'
    end
  end
end; end; end