Sha256: 5f097d86770ff2e541b7d6d63ef0255677e2663caf4d020e47f84ad158adb49b

Contents?: true

Size: 1.82 KB

Versions: 11

Compression:

Stored size: 1.82 KB

Contents

require 'chef/knife/joyent_base'

require 'chef/api_client'

class Chef
  class Knife
    class JoyentServerDelete < Knife

      include Knife::JoyentBase

      banner 'knife joyent server delete <server_id>'

      def run
        unless name_args.size === 1
          show_usage
          exit 1
        end

        id = name_args.first

        server = self.connection.servers.get(id)

        msg("ID", server.id.to_s)
        msg("Name", server.name)
        msg("State", server.state)
        msg("Type", server.type)
        msg("Dataset", server.dataset)
        msg("IPs", server.ips.join(" "))

        unless server
          puts ui.error("Unable to locate server: #{id}")
          exit 1
        end

        puts "\n"
        confirm("Do you really want to delete this server")

        puts ui.color("Stopping server...", :cyan)

        if server.stopped?
          puts ui.color("Server #{id} is already stopped", :cyan)
        else
          if server.stop
            puts ui.color("Server stopped", :cyan)
          else
            puts ui.error("Failed to stop server")
            exit 1
          end
        end

        server.destroy
        puts ui.color("Deleted server: #{id}", :cyan)

        puts "\n"
        confirm("Delete client and node for #{server.name}?")

        node = Chef::Node.load(server.name)
        puts "deleting node #{node.name}"
        node.destroy
        ui.warn("Deleted node named #{node.name}")

        client = Chef::ApiClient.load(server.name)
        puts "deleting client #{client.name}"
        client.destroy
        ui.warn("Deleted client named #{client.name}")
      rescue => e
        output_error(e)
        exit 1
      end

      def msg(label, value)
        if value && !value.empty?
          puts "#{ui.color(label, :cyan)}: #{value}"
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
knife-joyent-0.4.14 lib/chef/knife/joyent_server_delete.rb
knife-joyent-0.4.12 lib/chef/knife/joyent_server_delete.rb
knife-joyent-0.4.11 lib/chef/knife/joyent_server_delete.rb
knife-joyent-0.4.10 lib/chef/knife/joyent_server_delete.rb
knife-joyent-0.4.9 lib/chef/knife/joyent_server_delete.rb
knife-joyent-0.4.8 lib/chef/knife/joyent_server_delete.rb
knife-joyent-0.4.5 lib/chef/knife/joyent_server_delete.rb
knife-joyent-0.4.4 lib/chef/knife/joyent_server_delete.rb
knife-joyent-0.4.3 lib/chef/knife/joyent_server_delete.rb
knife-joyent-0.4.2 lib/chef/knife/joyent_server_delete.rb
knife-joyent-0.4.1 lib/chef/knife/joyent_server_delete.rb