Sha256: 79dd12e7bae60c5ed6e6f06fcd0823b7324f8c366c81dc83edfafbbef6ba3bca

Contents?: true

Size: 1.57 KB

Versions: 34

Compression:

Stored size: 1.57 KB

Contents

require 'fog/model'

module Fog
  module Bluebox

    class BlockInstantiationError < StandardError; end

    class Server < Fog::Model

      identity :id

      attribute :memory
      attribute :storage
      attribute :hostname
      attribute :cpu
      attribute :ips
      attribute :status
      attribute :flavor_id
      # attribute :image_id

      attr_accessor :image_id
      attribute :template

      # Not reported by the API, but used at create time
      attr_accessor :password, :ssh_key, :user

      def destroy
        requires :id
        connection.destroy_block(@id)
        true
      end

      def flavor
        requires :flavor_id
        connection.flavors.get(@flavor_id)
      end

      def image
        requires :image_id
        connection.images.get(@image_id)
      end

      def ready?
        @status == 'running'
      end

      def reboot(type = 'SOFT')
        requires :id
        connection.reboot_block(@id, type)
        true
      end

      def save
        requires :flavor_id, :image_id
        options = if !@password && !@ssh_key
          raise(ArgumentError, "password or ssh_key is required for this operation")
        elsif @ssh_key
          {'ssh_key' => @ssh_key}
        elsif @password
          {'password' => @password}
        end
        if @user
          options['user'] = @user
        end
        data = connection.create_block(@flavor_id, @image_id, options)
        merge_attributes(data.body)
        true
      end

      private

      def product=(new_product)
        @flavor_id = new_product['id']
      end

    end

  end
end

Version data entries

34 entries across 34 versions & 2 rubygems

Version Path
fog-0.2.30 lib/fog/bluebox/models/server.rb
fog-0.2.28 lib/fog/bluebox/models/server.rb
fog-0.2.27 lib/fog/bluebox/models/server.rb
fog-0.2.26 lib/fog/bluebox/models/server.rb
fog-0.2.25 lib/fog/bluebox/models/server.rb
fog-0.2.24 lib/fog/bluebox/models/server.rb
tecnh-fog-0.2.23.vpc lib/fog/bluebox/models/server.rb
fog-0.2.23 lib/fog/bluebox/models/server.rb
fog-0.2.22 lib/fog/bluebox/models/server.rb
fog-0.2.21 lib/fog/bluebox/models/server.rb
fog-0.2.20 lib/fog/bluebox/models/server.rb
fog-0.2.19 lib/fog/bluebox/models/server.rb
fog-0.2.18 lib/fog/bluebox/models/server.rb
fog-0.2.17 lib/fog/bluebox/models/server.rb
fog-0.2.16 lib/fog/bluebox/models/server.rb
fog-0.2.15 lib/fog/bluebox/models/server.rb
fog-0.2.14 lib/fog/bluebox/models/server.rb
fog-0.2.13 lib/fog/bluebox/models/server.rb
fog-0.2.12 lib/fog/bluebox/models/server.rb
fog-0.2.11 lib/fog/bluebox/models/server.rb