Sha256: 538b82e7c5fc52645a2390a07b6d0cd96a8f5e5ac7550683a021e12e4931c3ce

Contents?: true

Size: 1.31 KB

Versions: 5

Compression:

Stored size: 1.31 KB

Contents

module Brightbox
  class Server < Api

    def self.create(options)
      new(conn.servers.create(options))
    end

    def server_type
      @server_type ||= Type.new(flavor_id)
    end

    def image
      @image ||= Image.new(image_id)
    end

    def attributes
      a = fog_model.attributes
      a[:image] = image
      a[:created_at] = created_at
      a[:created_on] = fog_model.created_at.strftime("%Y-%m-%d")
      a[:type] = server_type
      a[:zone] = Zone.new(zone_id)
      a[:hostname] = hostname
      a[:public_hostname] = public_hostname unless cloud_ips.empty?
      a
    end

    def to_row
      o = attributes
      o[:cloud_ips] = cloud_ips.collect { |i| i['public_ip'] }
      o[:ips] = interfaces.collect { |i| i['ipv4_address'] }.join(', ')
      o
    end

    def deleted?
      fog_model.status == "deleted"
    end

    def destroy
      fog_model.destroy
    rescue Excon::Errors::Conflict => e
      raise Conflict, "Cannot delete server #{id}"
    end

    def self.get(id)
      conn.servers.get id
    end

    def self.all
      conn.servers
    end

    def self.default_field_order
      [:id, :status, :type, :zone, :created_on, :image_id, :cloud_ips, :name]
    end

    def hostname
      "#{id}.gb1.brightbox.com"
    end

    def public_hostname
      "public.#{hostname}"
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
bbcloud-0.9.1 lib/bbcloud/servers.rb
bbcloud-0.9 lib/bbcloud/servers.rb
bbcloud-0.8.2 lib/bbcloud/servers.rb
bbcloud-0.8.1 lib/bbcloud/servers.rb
bbcloud-0.8 lib/bbcloud/servers.rb