Sha256: 1a29f1a1d50352ce93e2326cb9aca9f9feb7b099321518414b96c1909d8d379a

Contents?: true

Size: 1.07 KB

Versions: 2

Compression:

Stored size: 1.07 KB

Contents

require 'fog/model'

module Fog
  module Terremark

    class Server < Fog::Model

      identity :id

      attribute :name
      attribute :status

      def destroy
        requires :id
        task = connection.tasks.new(connection.power_off(@id).body)
        task.wait_for { ready? }
        connection.delete_vapp(@id)
        true
      end

      # { '0' => 'Being created', '2' => 'Powered Off', '4' => 'Powered On'}
      def ready?
        @status == '2'
      end

      def reboot
        requires :id
        connection.reset(@id)
        true
      end

      def save
        requires :name
        data = connection.instantiate_vapp(@name)
        merge_attributes(data.body)
        deploy_task = connection.tasks.new(connection.deploy_vapp(@id).body)
        deploy_task.wait_for { ready? }
        power_on_task = connection.tasks.new(connection.power_on(@id).body)
        power_on_task.wait_for { ready? }
        true
      end

      private

      def href=(new_href)
        @id = new_href.split('/').last.to_i
      end

      def type=(new_type); end

    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fog-0.0.75 lib/fog/terremark/models/server.rb
fog-0.0.74 lib/fog/terremark/models/server.rb