foreman/app/models/nic/bond.rb @ bb3572ff
356b2e69 | Marek Hulan | module Nic
|
|
class Bond < Managed
|
|||
SEPARATOR = ','
|
|||
MODES = %w(balance-rr active-backup balance-xor broadcast 802.3ad balance-tlb balance-alb)
|
|||
validates :mode, :presence => true, :inclusion => { :in => MODES }
|
|||
validates :attached_devices, :format => { :with => /\A[a-z0-9#{SEPARATOR}.:_-]+\Z/ }, :allow_blank => true
|
|||
e329155b | Marek Hulan | validates :identifier, :presence => true, :if => :managed?
|
|
356b2e69 | Marek Hulan | ||
6a2fce1f | Marek Hulan | before_validation :ensure_virtual
|
|
356b2e69 | Marek Hulan | ||
bb3572ff | Daniel Lobato | register_to_enc_transformation :type, ->(type) { type.constantize.humanized_name }
|
|
177a281a | Marek Hulan | ||
356b2e69 | Marek Hulan | def virtual
|
|
true
|
|||
end
|
|||
alias_method :virtual?, :virtual
|
|||
def attached_devices=(devices)
|
|||
devices = devices.split(SEPARATOR) if devices.is_a?(String)
|
|||
super(devices.map { |i| i.downcase.strip }.join(SEPARATOR))
|
|||
end
|
|||
def attached_devices_identifiers
|
|||
attached_devices.split(SEPARATOR)
|
|||
end
|
|||
def add_slave(identifier)
|
|||
self.attached_devices = attached_devices_identifiers.push(identifier).uniq.join(SEPARATOR)
|
|||
end
|
|||
def remove_slave(identifier)
|
|||
self.attached_devices = attached_devices_identifiers.tap { |a| a.delete(identifier) }.join(SEPARATOR)
|
|||
end
|
|||
cad1b13c | Tomas Strachota | def self.humanized_name
|
|
N_('Bond')
|
|||
end
|
|||
356b2e69 | Marek Hulan | private
|
|
def ensure_virtual
|
|||
self.virtual = true
|
|||
end
|
|||
a1b2ee53 | Marek Hulan | ||
def enc_attributes
|
|||
@enc_attributes ||= (super + %w(mode attached_devices bond_options))
|
|||
end
|
|||
356b2e69 | Marek Hulan | end
|
|
cad1b13c | Tomas Strachota | ||
Base.register_type(Bond)
|
|||
356b2e69 | Marek Hulan | end
|