lib/kitsune/kit/commands/provision.rb



require "thor"
require_relative "../defaults"
require_relative "../provisioner"
require_relative "../options_builder"

module Kitsune
  module Kit
    module Commands
      class Provision < Thor
        namespace "provision"

        class_option :droplet_name, type: :string, aliases: "-n", desc: "Droplet name"
        class_option :region, type: :string, aliases: "-r", desc: "Region"
        class_option :size, type: :string, aliases: "-s", desc: "Size"
        class_option :image, type: :string, aliases: "-i", desc: "Image"
        class_option :tag, type: :string, aliases: "-t", desc: "Tag to filter/create"
        class_option :ssh_key_id, type: :string, aliases: "-k", desc: "SSH key ID"

        desc "create", "Create the Droplet if it doesn't exist"
        def create
          filled_options = Kitsune::Kit::OptionsBuilder.build(
            options,
            required: [:ssh_key_id],
            defaults: Kitsune::Kit::Defaults.infra
          )

          Provisioner.new(filled_options).create_or_show
        end

        desc "rollback", "Remove the Droplet if it exists"
        def rollback
          filled_options = Kitsune::Kit::OptionsBuilder.build(
            options,
            required: [:ssh_key_id],
            defaults: Kitsune::Kit::Defaults.infra
          )

          Provisioner.new(filled_options).rollback
        end
      end
    end
  end
end