Project

General

Profile

Download (1 KB) Statistics
| Branch: | Tag: | Revision:
class InterfaceMerge
attr_reader :merge_compute_attributes

def initialize(opts = {})
@merge_compute_attributes = !!opts[:merge_compute_attributes]
end

def run(host, compute_attrs)
return if compute_attrs.nil?

vm_interfaces = compute_attrs.vm_interfaces

# merge with existing
host.interfaces.select(&:physical?).each do |nic|
vm_nic = vm_interfaces.shift
return if vm_nic.nil?
merge(nic, vm_nic, compute_attrs)
end

# create additional if there are some attributes left
vm_interfaces.each do |vm_nic|
host.interfaces << merge(Nic::Managed.new, vm_nic, compute_attrs)
end
end

private

def merge(nic, vm_nic, compute_attrs)
nic.compute_attributes = if merge_compute_attributes
vm_nic.merge(nic.compute_attributes)
else
vm_nic
end

nic.compute_attributes['from_profile'] = compute_attrs.compute_profile.name
nic
end
end
(24-24/47)