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/virtual_box/models/compute/network_adapter.rb

82 lines
2.3 KiB
Ruby

require 'fog/core/model'
require 'fog/virtual_box/models/compute/nat_engine'
module Fog
module Compute
class VirtualBox
class NetworkAdapter < Fog::Model
identity :slot
attribute :adapter_type
attribute :attachment_type
attribute :bandwidth_limit
attribute :boot_priority
attribute :cable_connected
attribute :enabled
attribute :host_interface
attribute :internal_network
attribute :line_speed
attribute :mac_address
attribute :nat_driver
attribute :nat_network
attribute :trace_enabled
attribute :trace_file
attribute :vde_network
attr_accessor :machine
def save
with_session do |session|
session_raw = session.machine.get_network_adapter(slot)
# for attribute in [:adapter_type, :bandwidth_limit, :boot_priority, :cable_connected, :enabled, :host_interface, :internal_network, :line_speed, :mac_address, :nat_network, :trace_enabled, :trace_file]
# session_raw.send("#{attribute}=", attributes[attribute])
# end
session_raw.mac_address = mac_address
session.machine.save_settings
end
end
undef_method :nat_driver
def nat_driver
Fog::Compute::VirtualBox::NATEngine.new(
:connection => connection,
:machine => machine,
:network_adapter => self,
:raw => raw.nat_driver
)
end
private
def raw
@raw
end
def raw=(new_raw)
@raw = new_raw
raw_attributes = {}
for key in [:adapter_type, :attachment_type, :bandwidth_limit, :boot_priority, :cable_connected, :enabled, :host_interface, :internal_network, :line_speed, :mac_address, :nat_driver, :nat_network, :slot, :trace_enabled, :trace_file]
raw_attributes[key] = @raw.send(key)
end
merge_attributes(raw_attributes)
end
def session
::VirtualBox::Lib.lib.session
end
def with_session
raw_machine = machine.instance_variable_get(:@raw)
raw_machine.lock_machine(session, :write)
yield session
session.unlock_machine
end
end
end
end
end