Sha256: a58c01f84a42023e1070f35d42008c3a1b46932b7119137593e5bdf05f1735ba

Contents?: true

Size: 1.11 KB

Versions: 7

Compression:

Stored size: 1.11 KB

Contents

require 'fog/model'

module Fog
  module Terremark
    module Shared

      class Server < Fog::Model

        identity :id

        attribute :name
        attribute :status

        def destroy
          requires :id
          data = connection.power_off(@id).body
          task = connection.tasks.new(data)
          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)
          task = connection.deploy_vapp(@id)
          task.wait_for { ready? }
          task = connection.power_on(@id)
          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
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
fog-0.0.84 lib/fog/terremark/models/shared/server.rb
fog-0.0.83 lib/fog/terremark/models/shared/server.rb
fog-0.0.82 lib/fog/terremark/models/shared/server.rb
fog-0.0.81 lib/fog/terremark/models/shared/server.rb
fog-0.0.80 lib/fog/terremark/models/shared/server.rb
fog-0.0.79 lib/fog/terremark/models/shared/server.rb
fog-0.0.78 lib/fog/terremark/models/shared/server.rb