Skip to content

Commit

Permalink
Merge pull request #83 from xlab-si/expand-inventory
Browse files Browse the repository at this point in the history
Expand inventory
  • Loading branch information
agrare authored Jul 11, 2019
2 parents 92f6f41 + ba48b69 commit 8b4dc0d
Show file tree
Hide file tree
Showing 5 changed files with 1,288 additions and 600 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,9 @@ def physical_racks
def physical_chassis
rf_client.Chassis.Members.reject { |c| c.ChassisType == "Rack" }
end

def firmware_inventory
rf_client.UpdateService.FirmwareInventory&.Members || []
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ def parse
physical_racks
physical_chassis
physical_chassis_details
firmwares
end

private
Expand Down Expand Up @@ -50,15 +51,22 @@ def physical_server_details
:description => s.Description,
:location => format_location(location),
:location_led_state => s.IndicatorLED,
:machine_type => machine_type(s),
:manufacturer => s.Manufacturer,
:model => s.Model,
:product_name => s.Name,
:rack_name => location.dig("Placement", "Rack"),
:resource => server,
:room => location.dig("PostalAddress", "Room"),
:serial_number => s.SerialNumber,
)
end
end

def machine_type(server)
server.Processors.Members.first.InstructionSet
end

def get_server_location(server)
return {} if server.Links.Chassis.empty?
get_chassis_location(server.Links.Chassis.first)
Expand All @@ -82,12 +90,52 @@ def hardwares
collector.physical_servers.each do |s|
server = persister.physical_servers.lazy_find(s["@odata.id"])
computer = persister.physical_server_computer_systems.lazy_find(server)
persister.physical_server_hardwares.build(
hardware = persister.physical_server_hardwares.build(
:computer_system => computer,
:cpu_total_cores => get_server_cpu_core_count(s),
:disk_capacity => get_server_disk_capacity(s),
:memory_mb => get_server_memory_mb(s),
)
(s.NetworkInterfaces&.Members || []).each do |net_iface|
net_adapter = net_iface.Links.NetworkAdapter
persister.physical_server_network_devices.build(
:hardware => hardware,
:device_name => net_adapter.Name,
:device_type => "ethernet",
:manufacturer => net_adapter.Manufacturer,
:model => net_adapter.Model,
:uid_ems => net_adapter["@odata.id"]
)
end
(s.Storage&.Members || []).each do |storage|
(storage.StorageControllers || []).each do |controller|
persister.physical_server_storage_adapters.build(
:hardware => hardware,
:device_name => controller.Name,
:device_type => "storage",
:manufacturer => controller.Manufacturer,
:model => controller.Model,
:uid_ems => controller["@odata.id"]
)
end
end
end
end

def firmwares
collector.firmware_inventory.each do |firmware|
# RelatedItem is actually an array and is not a typo.
(firmware.RelatedItem || []).each do |item|
server = persister.physical_servers.lazy_find(item["@odata.id"])
computer = persister.physical_server_computer_systems.lazy_find(server)
hardware = persister.physical_server_hardwares.lazy_find(computer)
persister.physical_server_firmwares.build(
:resource => hardware,
:build => firmware.SoftwareId,
:name => firmware.Name,
:version => firmware.Version
)
end
end
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ def initialize_physical_infra_collections
physical_server_details
physical_server_computer_systems
physical_server_hardwares
physical_server_network_devices
physical_server_storage_adapters
physical_server_firmwares

physical_racks
physical_chassis
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,36 @@
:description => "G5 Computer System Node",
:location => "123, Adams Ave., Chesapeake, VA",
:location_led_state => "Off",
:machine_type => "x86-64",
:manufacturer => "Dell",
:model => "DSS9630M",
:product_name => "G5 Computer System",
:rack_name => "Rack-1",
:room => "Room B",
:serial_number => "CN701636AB0013",
},
:hardware => {
:cpu_total_cores => 24,
:disk_capacity => 6_017_150_230_528,
:memory_mb => 32_768,
},
:firmware => {
:build => "IVE1",
:name => "Bios",
:version => "1.20",
},
:nic => {
:device_name => "Intel X722 LOM (onboard)",
:manufacturer => "Intel",
:model => "Contoso X",
:uid_ems => "/redfish/v1/Chassis/Sled-1-1-1/NetworkAdapters/nic-1",
},
:storage => {
:device_name => "RAID Storage Adapter",
:manufacturer => "Contoso",
:model => "SAS3508+SAS35x36",
:uid_ems => "/redfish/v1/Systems/System-1-1-1-1/Storage/RAID_Slot1#/StorageControllers/0",
},
},
"/redfish/v1/Systems/System-1-1-1-2" => nil,
"/redfish/v1/Systems/System-1-2-1-1" => {
Expand All @@ -51,6 +71,13 @@
:disk_capacity => 412_316_860_416,
:memory_mb => 32_768,
},
:firmware => {
:build => "MyGTH-76",
:name => "UEFI",
:version => "2.50.4a",
},
:nic => {},
:storage => {},
},
}
end
Expand Down Expand Up @@ -170,6 +197,9 @@
assert_physical_servers
assert_physical_server_details
assert_hardwares
assert_firmwares
assert_nics
assert_storage_adapters
assert_racks
assert_physical_chassis
assert_physical_chassis_details
Expand Down Expand Up @@ -222,6 +252,27 @@ def assert_hardwares
end
end

def assert_firmwares
servers.each do |server_ems_ref, attrs|
server = PhysicalServer.find_by!(:ems_ref => server_ems_ref)
check_attributes(server.hardware.firmwares.first, attrs, :firmware)
end
end

def assert_nics
servers.each do |server_ems_ref, attrs|
server = PhysicalServer.find_by!(:ems_ref => server_ems_ref)
check_attributes(server.hardware.nics.first, attrs, :nic)
end
end

def assert_storage_adapters
servers.each do |server_ems_ref, attrs|
server = PhysicalServer.find_by!(:ems_ref => server_ems_ref)
check_attributes(server.hardware.storage_adapters.first, attrs, :storage)
end
end

def assert_racks
racks.each do |ems_ref, attrs|
rack = PhysicalRack.find_by!(:ems_ref => ems_ref)
Expand Down
Loading

0 comments on commit 8b4dc0d

Please sign in to comment.