1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/xenserver/models/compute/vbd.rb

91 lines
2.3 KiB
Ruby
Raw Normal View History

2012-04-02 07:25:03 -04:00
require 'fog/core/model'
module Fog
module Compute
class XenServer
class VBD < Fog::Model
# API Reference here:
# http://docs.vmd.citrix.com/XenServer/5.6.0/1.0/en_gb/api/?c=VBD
identity :reference
attribute :uuid
attribute :currently_attached
attribute :allowed_operations
attribute :current_operations
attribute :__vdi, :aliases => :VDI
attribute :__vm, :aliases => :VM
2012-04-02 07:25:03 -04:00
attribute :device
attribute :status_detail
attribute :status_code
2012-04-02 07:25:03 -04:00
attribute :type
attribute :userdevice
attribute :empty
attribute :type
attribute :mode
2012-04-10 02:01:17 -04:00
attribute :storage_lock
attribute :runtime_properties
attribute :unpluggable
2012-04-10 02:01:17 -04:00
attribute :bootable
attribute :qos_supported_algorithms
attribute :qos_algorithm_params
attribute :qos_algorithm_type
2012-04-10 02:01:17 -04:00
attribute :empty
attribute :__metrics, :aliases => :metrics
#
# May return nil
#
2012-04-02 07:25:03 -04:00
def vdi
connection.vdis.get __vdi
end
#
# TODO: May it return nil?
#
def server
connection.servers.get __vm
end
2012-04-02 07:25:03 -04:00
def save
requires :vdi, :server
ref = connection.create_vbd attributes[:server], attributes[:vdi], attributes
merge_attributes connection.vbds.get(ref).attributes
end
2012-04-10 02:01:17 -04:00
def unplug
connection.unplug_vbd reference
end
def unplug_force
connection.unplug_force_vbd reference
end
def eject
connection.eject_vbd reference
end
def insert(vdi)
connection.insert_vbd reference, vdi.reference
end
#
# return nil if the VBD is not attached
#
# TODO: Confirm that the VBD_metrics handle is invalid
# when the VBD is NOT attached. I get a HANDLE_INVALID
# exception in that case.
#
2012-04-10 02:01:17 -04:00
def metrics
return nil unless currently_attached
2012-04-10 02:01:17 -04:00
rec = connection.get_record( __metrics, 'VBD_metrics' )
Fog::Compute::XenServer::VbdMetrics.new(rec)
end
2012-04-02 07:25:03 -04:00
end
end
end
end