Class: ForemanDatacenter::Device
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- ForemanDatacenter::Device
- Includes:
- ScopedSearchExtensions
- Defined in:
- app/models/foreman_datacenter/device.rb
Instance Method Summary collapse
- #free_console_ports ⇒ Object
- #free_console_server_ports ⇒ Object
- #free_interfaces ⇒ Object
- #free_power_outlets ⇒ Object
- #free_power_ports ⇒ Object
- #ip_address ⇒ Object
- #mac_address ⇒ Object
- #name_without_fqdn ⇒ Object
- #parent? ⇒ Boolean
- #populate_from_host(host) ⇒ Object
- #positions ⇒ Object
- #sync_interfaces_with_host ⇒ Object
Instance Method Details
#free_console_ports ⇒ Object
79 80 81 |
# File 'app/models/foreman_datacenter/device.rb', line 79 def free_console_ports console_ports.where(console_server_port_id: nil) end |
#free_console_server_ports ⇒ Object
87 88 89 90 |
# File 'app/models/foreman_datacenter/device.rb', line 87 def free_console_server_ports console_server_ports.joins('LEFT JOIN console_ports ON console_server_ports.id = console_ports.console_server_port_id'). where(console_ports: { console_server_port_id: nil }) end |
#free_interfaces ⇒ Object
75 76 77 |
# File 'app/models/foreman_datacenter/device.rb', line 75 def free_interfaces interfaces.where(mgmt_only: false).reject(&:connected?) end |
#free_power_outlets ⇒ Object
92 93 94 95 |
# File 'app/models/foreman_datacenter/device.rb', line 92 def free_power_outlets power_outlets.joins('LEFT JOIN power_ports ON power_outlets.id = power_ports.power_outlet_id'). where(power_ports: { power_outlet_id: nil }) end |
#free_power_ports ⇒ Object
83 84 85 |
# File 'app/models/foreman_datacenter/device.rb', line 83 def free_power_ports power_ports.where(power_outlet_id: nil) end |
#ip_address ⇒ Object
66 67 68 69 |
# File 'app/models/foreman_datacenter/device.rb', line 66 def ip_address ipmi_interface.try(:ip_address) || mgmt_interface.try(:ip_address) || primary_ip4 end |
#mac_address ⇒ Object
62 63 64 |
# File 'app/models/foreman_datacenter/device.rb', line 62 def mac_address ipmi_interface.try(:mac_address) || mgmt_interface.try(:mac_address) end |
#name_without_fqdn ⇒ Object
110 111 112 113 |
# File 'app/models/foreman_datacenter/device.rb', line 110 def name_without_fqdn match = name.match(/^([^.]*)/) match[1] if match end |
#parent? ⇒ Boolean
71 72 73 |
# File 'app/models/foreman_datacenter/device.rb', line 71 def parent? device_type.try(:subdevice_role) == 'Parent' end |
#populate_from_host(host) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'app/models/foreman_datacenter/device.rb', line 97 def populate_from_host(host) self.host = host self.name = host.name device_type = DeviceType.for_host(host) self.device_type = device_type if device_type self.device_role = DeviceRole.for_host unless self.device_role serial = host.fact_value_by_name('serialnumber') self.serial = serial.value if serial end |
#positions ⇒ Object
115 116 117 118 119 120 121 122 123 |
# File 'app/models/foreman_datacenter/device.rb', line 115 def positions result = [] if size.nil? result << position else size.times{ |p| result << (position + p) } unless position.nil? end return result end |
#sync_interfaces_with_host ⇒ Object
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'app/models/foreman_datacenter/device.rb', line 125 def sync_interfaces_with_host if host existed_names = interfaces.map(&:name) host.interfaces.each do |interface| unless existed_names.include?(interface.identifier) interfaces.create( name: interface.identifier, form_factor: ForemanDatacenter::DeviceInterface::DEFAULT_FORM_FACTOR, mac_address: interface.mac, ip_address: interface.ip, mgmt_only: interface.identifier == 'ipmi' ) end end end end |