Class: ForemanDatacenter::Device

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

Instance Method Summary collapse

Instance Method Details

#free_console_portsObject



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

def free_console_ports
  console_ports.where(console_server_port_id: nil)
end

#free_console_server_portsObject



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

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



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

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

#free_power_outletsObject



97
98
99
100
# File 'app/models/foreman_datacenter/device.rb', line 97

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



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

def free_power_ports
  power_ports.where(power_outlet_id: nil)
end

#ip_addressObject



52
53
54
# File 'app/models/foreman_datacenter/device.rb', line 52

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

#is_console_serverObject



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

def is_console_server
  device_type.try(:is_console_server)
end

#is_network_deviceObject



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

def is_network_device
  device_type.try(:is_network_device)
end

#is_pduObject



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

def is_pdu
  device_type.try(:is_pdu)
end

#mac_addressObject



56
57
58
# File 'app/models/foreman_datacenter/device.rb', line 56

def mac_address
  ipmi_interface.try(:mac_address)
end

#manufacturer_idObject



60
61
62
# File 'app/models/foreman_datacenter/device.rb', line 60

def manufacturer_id
  device_type.try(:manufacturer_id)
end

#parent?Boolean

Returns:

  • (Boolean)


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

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

#populate_from_host(host) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
# File 'app/models/foreman_datacenter/device.rb', line 102

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

#siteObject



48
49
50
# File 'app/models/foreman_datacenter/device.rb', line 48

def site
  rack.site
end

#site_idObject



44
45
46
# File 'app/models/foreman_datacenter/device.rb', line 44

def site_id
  rack.try(:site_id)
end