Sha256: 0b8beab7525e8090ba81871d44d63959235d80bf33c5d4c91f1f9a2b1ebe5047

Contents?: true

Size: 1.18 KB

Versions: 2

Compression:

Stored size: 1.18 KB

Contents

module Hetzner
  class SSHKey
    def initialize(hetzner_client:, cluster_name:)
      @hetzner_client = hetzner_client
      @cluster_name = cluster_name
    end

    def create(ssh_key_path:)
      @ssh_key_path = ssh_key_path

      puts

      if ssh_key = find_ssh_key
        puts "SSH key already exists, skipping."
        puts
        return ssh_key["id"]
      end

      puts "Creating SSH key..."

      response = hetzner_client.post("/ssh_keys", ssh_key_config).body

      puts "...SSH key created."
      puts

      JSON.parse(response)["ssh_key"]["id"]
    end

    def delete
      if ssh_key = find_ssh_key
        puts "Deleting ssh_key..."
        hetzner_client.delete("/ssh_keys", ssh_key["id"])
        puts "...ssh_key deleted."
      else
        puts "SSH key no longer exists, skipping."
      end

      puts
    end

    private

      attr_reader :hetzner_client, :cluster_name, :ssh_key_path

      def ssh_key_config
        {
          name: cluster_name,
          public_key: File.read(ssh_key_path)
        }
      end

      def find_ssh_key
        hetzner_client.get("/ssh_keys")["ssh_keys"].detect{ |ssh_key| ssh_key["name"] == cluster_name }
      end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hetzner-k3s-0.2.0 lib/hetzner/infra/ssh_key.rb
hetzner-k3s-0.1.0 lib/hetzner/infra/ssh_key.rb