Class: ForemanDatacenter::Device

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
ScopedSearchExtensions
Defined in:
app/models/foreman_datacenter/device.rb

Instance Method Summary collapse

Instance Method Details

#free_console_portsObject



80
81
82
# File 'app/models/foreman_datacenter/device.rb', line 80

def free_console_ports
  console_ports.where(console_server_port_id: nil)
end

#free_console_server_portsObject



88
89
90
91
# File 'app/models/foreman_datacenter/device.rb', line 88

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_interfacesObject



76
77
78
# File 'app/models/foreman_datacenter/device.rb', line 76

def free_interfaces
  interfaces.where(mgmt_only: false).reject(&:connected?)
end

#free_power_outletsObject



93
94
95
96
# File 'app/models/foreman_datacenter/device.rb', line 93

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_portsObject



84
85
86
# File 'app/models/foreman_datacenter/device.rb', line 84

def free_power_ports
  power_ports.where(power_outlet_id: nil)
end

#ip_addressObject



67
68
69
70
# File 'app/models/foreman_datacenter/device.rb', line 67

def ip_address
  ipmi_interface.try(:ip_address) || mgmt_interface.try(:ip_address) ||
    primary_ip4
end

#mac_addressObject



63
64
65
# File 'app/models/foreman_datacenter/device.rb', line 63

def mac_address
  ipmi_interface.try(:mac_address) || mgmt_interface.try(:mac_address)
end

#name_without_fqdnObject



111
112
113
114
# File 'app/models/foreman_datacenter/device.rb', line 111

def name_without_fqdn
  match = name.match(/^([^.]*)/)
  match[1] if match
end

#parent?Boolean



72
73
74
# File 'app/models/foreman_datacenter/device.rb', line 72

def parent?
  device_type.try(:subdevice_role) == 'Parent'
end

#populate_from_host(host) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
109
# File 'app/models/foreman_datacenter/device.rb', line 98

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