Sha256: e7253ec3607ccc45597b48bf1db834800f0a65d4c7fb58cc543c0a6520ec3855

Contents?: true

Size: 1.85 KB

Versions: 35

Compression:

Stored size: 1.85 KB

Contents

# frozen_string_literal: true

require 'thor'
require 'openssl'
require 'httparty'
require 'sshkey'
require 'ipaddr'
require 'open-uri'
require 'yaml'

require_relative 'cluster'
require_relative 'configuration'
require_relative 'version'

module Hetzner
  module K3s
    class CLI < Thor
      def self.exit_on_failure?
        true
      end

      desc 'version', 'Print the version'
      def version
        puts Hetzner::K3s::VERSION
      end

      desc 'create-cluster', 'Create a k3s cluster in Hetzner Cloud'
      option :config_file, required: true
      def create_cluster
        configuration.validate action: :create
        Cluster.new(configuration: configuration).create
      end

      desc 'delete-cluster', 'Delete an existing k3s cluster in Hetzner Cloud'
      option :config_file, required: true
      def delete_cluster
        configuration.validate action: :delete
        Cluster.new(configuration: configuration).delete
      end

      desc 'upgrade-cluster', 'Upgrade an existing k3s cluster in Hetzner Cloud to a new version'
      option :config_file, required: true
      option :new_k3s_version, required: true
      option :force, default: 'false'
      def upgrade_cluster
        configuration.validate action: :upgrade
        Cluster.new(configuration: configuration).upgrade(new_k3s_version: options[:new_k3s_version], config_file: options[:config_file])
      end

      desc 'releases', 'List available k3s releases'
      def releases
        Hetzner::Configuration.available_releases.each do |release|
          puts release
        end
      end

      private

      attr_reader :hetzner_token, :hetzner_client

      def configuration
        @configuration ||= begin
          config = ::Hetzner::Configuration.new(options: options)
          @hetzner_token = config.hetzner_token
          config
        end
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
hetzner-k3s-0.6.4 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.3 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.2 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.2.pre1 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.1 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre29 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre28 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre27 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre26 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre25 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre24 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre23 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre22 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre21 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre20 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre19 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre18 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre17 lib/hetzner/k3s/cli.rb
hetzner-k3s-0.6.0.pre16 lib/hetzner/k3s/cli.rb